9d15b4d
From c1d31b6a26e5542142d569c94a70f1dc8e07afd6 Mon Sep 17 00:00:00 2001
b9efc54
From: Peter Jones <pjones@redhat.com>
b9efc54
Date: Tue, 6 Oct 2015 16:09:25 -0400
1b23a22
Subject: [PATCH 71/90] Make any of the loaders that link in efi mode honor
b9efc54
 secure boot.
b9efc54
b9efc54
And in this case "honor" means "even if somebody does link this in, they
b9efc54
won't register commands if SB is enabled."
b9efc54
b9efc54
Signed-off-by: Peter Jones <pjones@redhat.com>
b9efc54
---
b9efc54
 grub-core/Makefile.am              |  1 +
b9efc54
 grub-core/Makefile.core.def        |  1 +
b9efc54
 grub-core/commands/iorw.c          |  7 +++++
b9efc54
 grub-core/commands/memrw.c         |  7 +++++
b9efc54
 grub-core/kern/efi/efi.c           | 28 ------------------
b9efc54
 grub-core/kern/efi/sb.c            | 58 ++++++++++++++++++++++++++++++++++++++
b9efc54
 grub-core/loader/efi/appleloader.c |  7 +++++
b9efc54
 grub-core/loader/efi/chainloader.c |  1 +
b9efc54
 grub-core/loader/i386/bsd.c        |  7 +++++
b9efc54
 grub-core/loader/i386/linux.c      |  7 +++++
b9efc54
 grub-core/loader/i386/pc/linux.c   |  7 +++++
b9efc54
 grub-core/loader/multiboot.c       |  7 +++++
b9efc54
 grub-core/loader/xnu.c             |  7 +++++
b9efc54
 include/grub/efi/efi.h             |  1 -
b9efc54
 include/grub/efi/sb.h              | 29 +++++++++++++++++++
9d15b4d
 include/grub/ia64/linux.h          |  0
9d15b4d
 include/grub/mips/linux.h          |  0
9d15b4d
 include/grub/powerpc/linux.h       |  0
9d15b4d
 include/grub/sparc64/linux.h       |  0
9d15b4d
 19 files changed, 146 insertions(+), 29 deletions(-)
b9efc54
 create mode 100644 grub-core/kern/efi/sb.c
b9efc54
 create mode 100644 include/grub/efi/sb.h
9d15b4d
 create mode 100644 include/grub/ia64/linux.h
9d15b4d
 create mode 100644 include/grub/mips/linux.h
1713515
 create mode 100644 include/grub/powerpc/linux.h
9d15b4d
 create mode 100644 include/grub/sparc64/linux.h
b9efc54
b9efc54
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
b9efc54
index 04e9395..fd715a8 100644
b9efc54
--- a/grub-core/Makefile.am
b9efc54
+++ b/grub-core/Makefile.am
b9efc54
@@ -71,6 +71,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/command.h
b9efc54
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/device.h
b9efc54
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/disk.h
b9efc54
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/dl.h
b9efc54
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/sb.h
b9efc54
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env.h
b9efc54
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env_private.h
b9efc54
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/err.h
b9efc54
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
d9747d8
index 7fba196..ac195d1 100644
b9efc54
--- a/grub-core/Makefile.core.def
b9efc54
+++ b/grub-core/Makefile.core.def
d9747d8
@@ -178,6 +178,7 @@ kernel = {
b9efc54
   i386_multiboot = kern/i386/pc/acpi.c;
b9efc54
   i386_coreboot = kern/acpi.c;
b9efc54
   i386_multiboot = kern/acpi.c;
b9efc54
+  common = kern/efi/sb.c;
b9efc54
 
b9efc54
   x86 = kern/i386/tsc.c;
b9efc54
   x86 = kern/i386/tsc_pit.c;
b9efc54
diff --git a/grub-core/commands/iorw.c b/grub-core/commands/iorw.c
b9efc54
index a0c164e..41a7f3f 100644
b9efc54
--- a/grub-core/commands/iorw.c
b9efc54
+++ b/grub-core/commands/iorw.c
b9efc54
@@ -23,6 +23,7 @@
b9efc54
 #include <grub/env.h>
b9efc54
 #include <grub/cpu/io.h>
b9efc54
 #include <grub/i18n.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 
b9efc54
 GRUB_MOD_LICENSE ("GPLv3+");
b9efc54
 
b9efc54
@@ -118,6 +119,9 @@ grub_cmd_write (grub_command_t cmd, int argc, char **argv)
b9efc54
 
b9efc54
 GRUB_MOD_INIT(memrw)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   cmd_read_byte =
b9efc54
     grub_register_extcmd ("inb", grub_cmd_read, 0,
b9efc54
 			  N_("PORT"), N_("Read 8-bit value from PORT."),
b9efc54
@@ -146,6 +150,9 @@ GRUB_MOD_INIT(memrw)
b9efc54
 
b9efc54
 GRUB_MOD_FINI(memrw)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   grub_unregister_extcmd (cmd_read_byte);
b9efc54
   grub_unregister_extcmd (cmd_read_word);
b9efc54
   grub_unregister_extcmd (cmd_read_dword);
b9efc54
diff --git a/grub-core/commands/memrw.c b/grub-core/commands/memrw.c
b9efc54
index 98769ea..088cbe9 100644
b9efc54
--- a/grub-core/commands/memrw.c
b9efc54
+++ b/grub-core/commands/memrw.c
b9efc54
@@ -22,6 +22,7 @@
b9efc54
 #include <grub/extcmd.h>
b9efc54
 #include <grub/env.h>
b9efc54
 #include <grub/i18n.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 
b9efc54
 GRUB_MOD_LICENSE ("GPLv3+");
b9efc54
 
b9efc54
@@ -120,6 +121,9 @@ grub_cmd_write (grub_command_t cmd, int argc, char **argv)
b9efc54
 
b9efc54
 GRUB_MOD_INIT(memrw)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   cmd_read_byte =
b9efc54
     grub_register_extcmd ("read_byte", grub_cmd_read, 0,
b9efc54
 			  N_("ADDR"), N_("Read 8-bit value from ADDR."),
b9efc54
@@ -148,6 +152,9 @@ GRUB_MOD_INIT(memrw)
b9efc54
 
b9efc54
 GRUB_MOD_FINI(memrw)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   grub_unregister_extcmd (cmd_read_byte);
b9efc54
   grub_unregister_extcmd (cmd_read_word);
b9efc54
   grub_unregister_extcmd (cmd_read_dword);
b9efc54
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
b9efc54
index 0859910..101307f 100644
b9efc54
--- a/grub-core/kern/efi/efi.c
b9efc54
+++ b/grub-core/kern/efi/efi.c
b9efc54
@@ -269,34 +269,6 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
b9efc54
   return NULL;
b9efc54
 }
b9efc54
 
b9efc54
-grub_efi_boolean_t
b9efc54
-grub_efi_secure_boot (void)
b9efc54
-{
b9efc54
-  grub_efi_guid_t efi_var_guid = GRUB_EFI_GLOBAL_VARIABLE_GUID;
b9efc54
-  grub_size_t datasize;
b9efc54
-  char *secure_boot = NULL;
b9efc54
-  char *setup_mode = NULL;
b9efc54
-  grub_efi_boolean_t ret = 0;
b9efc54
-
b9efc54
-  secure_boot = grub_efi_get_variable("SecureBoot", &efi_var_guid, &datasize);
b9efc54
-
b9efc54
-  if (datasize != 1 || !secure_boot)
b9efc54
-    goto out;
b9efc54
-
b9efc54
-  setup_mode = grub_efi_get_variable("SetupMode", &efi_var_guid, &datasize);
b9efc54
-
b9efc54
-  if (datasize != 1 || !setup_mode)
b9efc54
-    goto out;
b9efc54
-
b9efc54
-  if (*secure_boot && !*setup_mode)
b9efc54
-    ret = 1;
b9efc54
-
b9efc54
- out:
b9efc54
-  grub_free (secure_boot);
b9efc54
-  grub_free (setup_mode);
b9efc54
-  return ret;
b9efc54
-}
b9efc54
-
b9efc54
 #pragma GCC diagnostic ignored "-Wcast-align"
b9efc54
 
b9efc54
 /* Search the mods section from the PE32/PE32+ image. This code uses
b9efc54
diff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c
b9efc54
new file mode 100644
b9efc54
index 0000000..a41b6c5
b9efc54
--- /dev/null
b9efc54
+++ b/grub-core/kern/efi/sb.c
b9efc54
@@ -0,0 +1,58 @@
b9efc54
+/*
b9efc54
+ *  GRUB  --  GRand Unified Bootloader
b9efc54
+ *  Copyright (C) 2014 Free Software Foundation, Inc.
b9efc54
+ *
b9efc54
+ *  GRUB is free software: you can redistribute it and/or modify
b9efc54
+ *  it under the terms of the GNU General Public License as published by
b9efc54
+ *  the Free Software Foundation, either version 3 of the License, or
b9efc54
+ *  (at your option) any later version.
b9efc54
+ *
b9efc54
+ *  GRUB is distributed in the hope that it will be useful,
b9efc54
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
b9efc54
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b9efc54
+ *  GNU General Public License for more details.
b9efc54
+ *
b9efc54
+ *  You should have received a copy of the GNU General Public License
b9efc54
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
b9efc54
+ */
b9efc54
+
b9efc54
+#include <grub/err.h>
b9efc54
+#include <grub/mm.h>
b9efc54
+#include <grub/types.h>
b9efc54
+#include <grub/cpu/linux.h>
b9efc54
+#include <grub/efi/efi.h>
b9efc54
+#include <grub/efi/pe32.h>
b9efc54
+#include <grub/efi/linux.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
+
b9efc54
+int
b9efc54
+grub_efi_secure_boot (void)
b9efc54
+{
b9efc54
+#ifdef GRUB_MACHINE_EFI
b9efc54
+  grub_efi_guid_t efi_var_guid = GRUB_EFI_GLOBAL_VARIABLE_GUID;
b9efc54
+  grub_size_t datasize;
b9efc54
+  char *secure_boot = NULL;
b9efc54
+  char *setup_mode = NULL;
b9efc54
+  grub_efi_boolean_t ret = 0;
b9efc54
+
b9efc54
+  secure_boot = grub_efi_get_variable("SecureBoot", &efi_var_guid, &datasize);
b9efc54
+
b9efc54
+  if (datasize != 1 || !secure_boot)
b9efc54
+    goto out;
b9efc54
+
b9efc54
+  setup_mode = grub_efi_get_variable("SetupMode", &efi_var_guid, &datasize);
b9efc54
+
b9efc54
+  if (datasize != 1 || !setup_mode)
b9efc54
+    goto out;
b9efc54
+
b9efc54
+  if (*secure_boot && !*setup_mode)
b9efc54
+    ret = 1;
b9efc54
+
b9efc54
+ out:
b9efc54
+  grub_free (secure_boot);
b9efc54
+  grub_free (setup_mode);
b9efc54
+  return ret;
b9efc54
+#else
b9efc54
+  return 0;
b9efc54
+#endif
b9efc54
+}
b9efc54
diff --git a/grub-core/loader/efi/appleloader.c b/grub-core/loader/efi/appleloader.c
b9efc54
index 74888c4..69c2a10 100644
b9efc54
--- a/grub-core/loader/efi/appleloader.c
b9efc54
+++ b/grub-core/loader/efi/appleloader.c
b9efc54
@@ -24,6 +24,7 @@
b9efc54
 #include <grub/misc.h>
b9efc54
 #include <grub/efi/api.h>
b9efc54
 #include <grub/efi/efi.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 #include <grub/command.h>
b9efc54
 #include <grub/i18n.h>
b9efc54
 
b9efc54
@@ -227,6 +228,9 @@ static grub_command_t cmd;
b9efc54
 
b9efc54
 GRUB_MOD_INIT(appleloader)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   cmd = grub_register_command ("appleloader", grub_cmd_appleloader,
b9efc54
 			       N_("[OPTS]"),
b9efc54
 			       /* TRANSLATORS: This command is used on EFI to
b9efc54
@@ -238,5 +242,8 @@ GRUB_MOD_INIT(appleloader)
b9efc54
 
b9efc54
 GRUB_MOD_FINI(appleloader)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   grub_unregister_command (cmd);
b9efc54
 }
b9efc54
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
b9efc54
index 3cbb6c5..c4184fa 100644
b9efc54
--- a/grub-core/loader/efi/chainloader.c
b9efc54
+++ b/grub-core/loader/efi/chainloader.c
b9efc54
@@ -34,6 +34,7 @@
b9efc54
 #include <grub/efi/disk.h>
b9efc54
 #include <grub/efi/pe32.h>
b9efc54
 #include <grub/efi/linux.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 #include <grub/command.h>
b9efc54
 #include <grub/i18n.h>
b9efc54
 #include <grub/net.h>
b9efc54
diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c
b9efc54
index 7f96515..87709aa 100644
b9efc54
--- a/grub-core/loader/i386/bsd.c
b9efc54
+++ b/grub-core/loader/i386/bsd.c
b9efc54
@@ -38,6 +38,7 @@
b9efc54
 #ifdef GRUB_MACHINE_PCBIOS
b9efc54
 #include <grub/machine/int.h>
b9efc54
 #endif
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 
b9efc54
 GRUB_MOD_LICENSE ("GPLv3+");
b9efc54
 
b9efc54
@@ -2124,6 +2125,9 @@ static grub_command_t cmd_netbsd_module_elf, cmd_openbsd_ramdisk;
b9efc54
 
b9efc54
 GRUB_MOD_INIT (bsd)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   /* Net and OpenBSD kernels are often compressed.  */
b9efc54
   grub_dl_load ("gzio");
b9efc54
 
b9efc54
@@ -2163,6 +2167,9 @@ GRUB_MOD_INIT (bsd)
b9efc54
 
b9efc54
 GRUB_MOD_FINI (bsd)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   grub_unregister_extcmd (cmd_freebsd);
b9efc54
   grub_unregister_extcmd (cmd_openbsd);
b9efc54
   grub_unregister_extcmd (cmd_netbsd);
b9efc54
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
b9efc54
index fddcc46..b0afcca 100644
b9efc54
--- a/grub-core/loader/i386/linux.c
b9efc54
+++ b/grub-core/loader/i386/linux.c
b9efc54
@@ -35,6 +35,7 @@
b9efc54
 #include <grub/i18n.h>
b9efc54
 #include <grub/lib/cmdline.h>
b9efc54
 #include <grub/linux.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 
b9efc54
 GRUB_MOD_LICENSE ("GPLv3+");
b9efc54
 
b9efc54
@@ -1136,6 +1137,9 @@ static grub_command_t cmd_linux, cmd_initrd;
b9efc54
 
b9efc54
 GRUB_MOD_INIT(linux)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   cmd_linux = grub_register_command ("linux", grub_cmd_linux,
b9efc54
 				     0, N_("Load Linux."));
b9efc54
   cmd_initrd = grub_register_command ("initrd", grub_cmd_initrd,
b9efc54
@@ -1145,6 +1149,9 @@ GRUB_MOD_INIT(linux)
b9efc54
 
b9efc54
 GRUB_MOD_FINI(linux)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   grub_unregister_command (cmd_linux);
b9efc54
   grub_unregister_command (cmd_initrd);
b9efc54
 }
b9efc54
diff --git a/grub-core/loader/i386/pc/linux.c b/grub-core/loader/i386/pc/linux.c
b9efc54
index a293b17..9128315 100644
b9efc54
--- a/grub-core/loader/i386/pc/linux.c
b9efc54
+++ b/grub-core/loader/i386/pc/linux.c
b9efc54
@@ -35,6 +35,7 @@
b9efc54
 #include <grub/i386/floppy.h>
b9efc54
 #include <grub/lib/cmdline.h>
b9efc54
 #include <grub/linux.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 
b9efc54
 GRUB_MOD_LICENSE ("GPLv3+");
b9efc54
 
b9efc54
@@ -472,6 +473,9 @@ static grub_command_t cmd_linux, cmd_initrd;
b9efc54
 
b9efc54
 GRUB_MOD_INIT(linux16)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   cmd_linux =
b9efc54
     grub_register_command ("linux16", grub_cmd_linux,
b9efc54
 			   0, N_("Load Linux."));
b9efc54
@@ -483,6 +487,9 @@ GRUB_MOD_INIT(linux16)
b9efc54
 
b9efc54
 GRUB_MOD_FINI(linux16)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   grub_unregister_command (cmd_linux);
b9efc54
   grub_unregister_command (cmd_initrd);
b9efc54
 }
b9efc54
diff --git a/grub-core/loader/multiboot.c b/grub-core/loader/multiboot.c
b9efc54
index 73aa0aa..64a6513 100644
b9efc54
--- a/grub-core/loader/multiboot.c
b9efc54
+++ b/grub-core/loader/multiboot.c
b9efc54
@@ -42,6 +42,7 @@
b9efc54
 #include <grub/video.h>
b9efc54
 #include <grub/memory.h>
b9efc54
 #include <grub/i18n.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 
b9efc54
 GRUB_MOD_LICENSE ("GPLv3+");
b9efc54
 
b9efc54
@@ -391,6 +392,9 @@ static grub_command_t cmd_multiboot, cmd_module;
b9efc54
 
b9efc54
 GRUB_MOD_INIT(multiboot)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   cmd_multiboot =
b9efc54
 #ifdef GRUB_USE_MULTIBOOT2
b9efc54
     grub_register_command ("multiboot2", grub_cmd_multiboot,
b9efc54
@@ -411,6 +415,9 @@ GRUB_MOD_INIT(multiboot)
b9efc54
 
b9efc54
 GRUB_MOD_FINI(multiboot)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   grub_unregister_command (cmd_multiboot);
b9efc54
   grub_unregister_command (cmd_module);
b9efc54
 }
b9efc54
diff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c
b9efc54
index c9885b1..df8dfdb 100644
b9efc54
--- a/grub-core/loader/xnu.c
b9efc54
+++ b/grub-core/loader/xnu.c
b9efc54
@@ -33,6 +33,7 @@
b9efc54
 #include <grub/extcmd.h>
b9efc54
 #include <grub/env.h>
b9efc54
 #include <grub/i18n.h>
b9efc54
+#include <grub/efi/sb.h>
b9efc54
 
b9efc54
 GRUB_MOD_LICENSE ("GPLv3+");
b9efc54
 
b9efc54
@@ -1469,6 +1470,9 @@ static grub_extcmd_t cmd_splash;
b9efc54
 
b9efc54
 GRUB_MOD_INIT(xnu)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
   cmd_kernel = grub_register_command ("xnu_kernel", grub_cmd_xnu_kernel, 0,
b9efc54
 				      N_("Load XNU image."));
b9efc54
   cmd_kernel64 = grub_register_command ("xnu_kernel64", grub_cmd_xnu_kernel64,
b9efc54
@@ -1509,6 +1513,9 @@ GRUB_MOD_INIT(xnu)
b9efc54
 
b9efc54
 GRUB_MOD_FINI(xnu)
b9efc54
 {
b9efc54
+  if (grub_efi_secure_boot())
b9efc54
+    return;
b9efc54
+
b9efc54
 #ifndef GRUB_MACHINE_EMU
b9efc54
   grub_unregister_command (cmd_resume);
b9efc54
 #endif
b9efc54
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
b9efc54
index 2245632..9a2da0e 100644
b9efc54
--- a/include/grub/efi/efi.h
b9efc54
+++ b/include/grub/efi/efi.h
b9efc54
@@ -76,7 +76,6 @@ EXPORT_FUNC (grub_efi_set_variable) (const char *var,
b9efc54
 				     const grub_efi_guid_t *guid,
b9efc54
 				     void *data,
b9efc54
 				     grub_size_t datasize);
b9efc54
-grub_efi_boolean_t EXPORT_FUNC (grub_efi_secure_boot) (void);
b9efc54
 int
b9efc54
 EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
b9efc54
 					     const grub_efi_device_path_t *dp2);
b9efc54
diff --git a/include/grub/efi/sb.h b/include/grub/efi/sb.h
b9efc54
new file mode 100644
b9efc54
index 0000000..9629fbb
b9efc54
--- /dev/null
b9efc54
+++ b/include/grub/efi/sb.h
b9efc54
@@ -0,0 +1,29 @@
b9efc54
+/* sb.h - declare functions for EFI Secure Boot support */
b9efc54
+/*
b9efc54
+ *  GRUB  --  GRand Unified Bootloader
b9efc54
+ *  Copyright (C) 2006,2007,2008,2009  Free Software Foundation, Inc.
b9efc54
+ *
b9efc54
+ *  GRUB is free software: you can redistribute it and/or modify
b9efc54
+ *  it under the terms of the GNU General Public License as published by
b9efc54
+ *  the Free Software Foundation, either version 3 of the License, or
b9efc54
+ *  (at your option) any later version.
b9efc54
+ *
b9efc54
+ *  GRUB is distributed in the hope that it will be useful,
b9efc54
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
b9efc54
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b9efc54
+ *  GNU General Public License for more details.
b9efc54
+ *
b9efc54
+ *  You should have received a copy of the GNU General Public License
b9efc54
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
b9efc54
+ */
b9efc54
+
b9efc54
+#ifndef GRUB_EFI_SB_HEADER
b9efc54
+#define GRUB_EFI_SB_HEADER	1
b9efc54
+
b9efc54
+#include <grub/types.h>
b9efc54
+#include <grub/dl.h>
b9efc54
+
b9efc54
+/* Functions.  */
b9efc54
+int EXPORT_FUNC (grub_efi_secure_boot) (void);
b9efc54
+
b9efc54
+#endif /* ! GRUB_EFI_SB_HEADER */
9d15b4d
diff --git a/include/grub/ia64/linux.h b/include/grub/ia64/linux.h
9d15b4d
new file mode 100644
9d15b4d
index 0000000..e69de29
9d15b4d
diff --git a/include/grub/mips/linux.h b/include/grub/mips/linux.h
9d15b4d
new file mode 100644
9d15b4d
index 0000000..e69de29
1713515
diff --git a/include/grub/powerpc/linux.h b/include/grub/powerpc/linux.h
1713515
new file mode 100644
9d15b4d
index 0000000..e69de29
9d15b4d
diff --git a/include/grub/sparc64/linux.h b/include/grub/sparc64/linux.h
9d15b4d
new file mode 100644
9d15b4d
index 0000000..e69de29
b9efc54
-- 
7ec92ff
2.9.3
b9efc54