
Implement efi_reboot(), which is really just a wrapper around the EfiResetSystem() EFI runtime service, but it does at least allow us to funnel all callers through a single location. It also simplifies the callsites since users no longer need to check to see whether EFI_RUNTIME_SERVICES are enabled. Cc: Tony Luck <tony.luck@intel.com> Tested-by: Mark Salter <msalter@redhat.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
27 lines
531 B
C
27 lines
531 B
C
/*
|
|
* Copyright (C) 2014 Intel Corporation; author Matt Fleming
|
|
* Copyright (c) 2014 Red Hat, Inc., Mark Salter <msalter@redhat.com>
|
|
*/
|
|
#include <linux/efi.h>
|
|
#include <linux/reboot.h>
|
|
|
|
void efi_reboot(enum reboot_mode reboot_mode, const char *__unused)
|
|
{
|
|
int efi_mode;
|
|
|
|
if (!efi_enabled(EFI_RUNTIME_SERVICES))
|
|
return;
|
|
|
|
switch (reboot_mode) {
|
|
case REBOOT_WARM:
|
|
case REBOOT_SOFT:
|
|
efi_mode = EFI_RESET_WARM;
|
|
break;
|
|
default:
|
|
efi_mode = EFI_RESET_COLD;
|
|
break;
|
|
}
|
|
|
|
efi.reset_system(efi_mode, EFI_SUCCESS, 0, NULL);
|
|
}
|