Re: [PATCH] /sys/firmware/efi/systab giving incorrect value for smbios

From: Matthew Garrett
Date: Sat Mar 04 2006 - 13:57:59 EST


Or, as an alternative, remove the virtual to physical mapping that
efivars does. This requires fixing up IA64 to match. I've no idea which
approach is right.

Signed-off-by: Matthew Garrett <mjg59@xxxxxxxxxxxxx>

diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index bda5bce..ba598af 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -575,7 +575,7 @@ systab_read(struct subsystem *entry, cha
if (efi.acpi)
str += sprintf(str, "ACPI=0x%lx\n", __pa(efi.acpi));
if (efi.smbios)
- str += sprintf(str, "SMBIOS=0x%lx\n", __pa(efi.smbios));
+ str += sprintf(str, "SMBIOS=0x%lx\n", efi.smbios);
if (efi.hcdp)
str += sprintf(str, "HCDP=0x%lx\n", __pa(efi.hcdp));
if (efi.boot_info)
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index a3aa45c..ff3795b 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -451,7 +451,7 @@ efi_init (void)
efi.acpi = __va(config_tables[i].table);
printk(" ACPI=0x%lx", config_tables[i].table);
} else if (efi_guidcmp(config_tables[i].guid, SMBIOS_TABLE_GUID) == 0) {
- efi.smbios = __va(config_tables[i].table);
+ efi.smbios = config_tables[i].table;
printk(" SMBIOS=0x%lx", config_tables[i].table);
} else if (efi_guidcmp(config_tables[i].guid, SAL_SYSTEM_TABLE_GUID) == 0) {
efi.sal_systab = __va(config_tables[i].table);

--
Matthew Garrett | mjg59@xxxxxxxxxxxxx
-
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/