In preparation for adding another EFI_MEMMAP dependent call that needs
to occur before e820__memblock_setup() fixup the existing efi calls to
check for EFI_MEMMAP internally. This is cleaner than checking
EFI_MEMMAP multiple times in setup_arch().

Cc: <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Dave Hansen <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
---
 arch/x86/kernel/setup.c         |   19 +++++++++----------
 arch/x86/platform/efi/efi.c     |    3 +++
 arch/x86/platform/efi/quirks.c  |    3 +++
 drivers/firmware/efi/esrt.c     |    3 +++
 drivers/firmware/efi/fake_mem.c |    2 +-
 5 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 08a5f4a131f5..b68fd57a8d26 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1103,21 +1103,20 @@ void __init setup_arch(char **cmdline_p)
        cleanup_highmap();
 
        memblock_set_current_limit(ISA_END_ADDRESS);
+
        e820__memblock_setup();
 
        reserve_bios_regions();
 
-       if (efi_enabled(EFI_MEMMAP)) {
-               efi_fake_memmap();
-               efi_find_mirror();
-               efi_esrt_init();
+       efi_fake_memmap();
+       efi_find_mirror();
+       efi_esrt_init();
 
-               /*
-                * The EFI specification says that boot service code won't be
-                * called after ExitBootServices(). This is, in fact, a lie.
-                */
-               efi_reserve_boot_services();
-       }
+       /*
+        * The EFI specification says that boot service code won't be
+        * called after ExitBootServices(). This is, in fact, a lie.
+        */
+       efi_reserve_boot_services();
 
        /* preallocate 4k for mptable mpc */
        e820__memblock_alloc_reserved_mpc_new();
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index e1cb01a22fa8..4e8458b1ca30 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -103,6 +103,9 @@ void __init efi_find_mirror(void)
        efi_memory_desc_t *md;
        u64 mirror_size = 0, total_size = 0;
 
+       if (!efi_enabled(EFI_MEMMAP))
+               return;
+
        for_each_efi_memory_desc(md) {
                unsigned long long start = md->phys_addr;
                unsigned long long size = md->num_pages << EFI_PAGE_SHIFT;
diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c
index feb77777c8b8..50f7303da7be 100644
--- a/arch/x86/platform/efi/quirks.c
+++ b/arch/x86/platform/efi/quirks.c
@@ -320,6 +320,9 @@ void __init efi_reserve_boot_services(void)
 {
        efi_memory_desc_t *md;
 
+       if (!efi_enabled(EFI_MEMMAP))
+               return;
+
        for_each_efi_memory_desc(md) {
                u64 start = md->phys_addr;
                u64 size = md->num_pages << EFI_PAGE_SHIFT;
diff --git a/drivers/firmware/efi/esrt.c b/drivers/firmware/efi/esrt.c
index d6dd5f503fa2..2762e0662bf4 100644
--- a/drivers/firmware/efi/esrt.c
+++ b/drivers/firmware/efi/esrt.c
@@ -246,6 +246,9 @@ void __init efi_esrt_init(void)
        int rc;
        phys_addr_t end;
 
+       if (!efi_enabled(EFI_MEMMAP))
+               return;
+
        pr_debug("esrt-init: loading.\n");
        if (!esrt_table_exists())
                return;
diff --git a/drivers/firmware/efi/fake_mem.c b/drivers/firmware/efi/fake_mem.c
index 9501edc0fcfb..526b45331d96 100644
--- a/drivers/firmware/efi/fake_mem.c
+++ b/drivers/firmware/efi/fake_mem.c
@@ -44,7 +44,7 @@ void __init efi_fake_memmap(void)
        void *new_memmap;
        int i;
 
-       if (!nr_fake_mem)
+       if (!efi_enabled(EFI_MEMMAP) || !nr_fake_mem)
                return;
 
        /* count up the number of EFI memory descriptor */

Reply via email to