|
@@ -0,0 +1,26 @@
|
|
|
+/*
|
|
|
+ * 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);
|
|
|
+}
|