[PATCH] efi: Use the generic efi.memmap instead of 'memmap'

From: Matt Fleming
Date: Sat Oct 03 2015 - 15:44:52 EST


Guenter reports that commit 7bf793115dd9 ("efi, x86: Rearrange
efi_mem_attributes()") breaks ia64 compilation with the following
error,

drivers/built-in.o: In function `efi_mem_attributes':
(.text+0xde962): undefined reference to `memmap'
drivers/built-in.o: In function `efi_mem_attributes':
(.text+0xde971): undefined reference to `memmap'

Instead of using the (rather poorly named) global variable 'memmap'
which doesn't exist on ia64, use efi.memmap which points to the
'memmap' object on x86 and arm64 and which is NULL for ia64.

The fact that efi.memmap is NULL for ia64 is OK because ia64 provides
its own implementation of efi_mem_attributes().

Reported-by: Guenter Roeck <linux@xxxxxxxxxxxx>
Cc: Jonathan Zhang <zjzhang@xxxxxxxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: Tony Luck <tony.luck@xxxxxxxxx>
Cc: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>
Signed-off-by: Matt Fleming <matt.fleming@xxxxxxxxx>
---
drivers/firmware/efi/efi.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index dd153be03f56..335f4c1a1504 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -647,13 +647,15 @@ char * __init efi_md_typeattr_format(char *buf, size_t size,
*/
u64 __weak efi_mem_attributes(unsigned long phys_addr)
{
+ struct efi_memory_map *map;
efi_memory_desc_t *md;
void *p;

if (!efi_enabled(EFI_MEMMAP))
return 0;

- for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
+ map = efi.memmap;
+ for (p = map->map; p < map->map_end; p += map->desc_size) {
md = p;
if ((md->phys_addr <= phys_addr) &&
(phys_addr < (md->phys_addr +
--
2.1.0

--
Matt Fleming, Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/