[PATCH] EFI fixes
authorTolentino, Matthew E <matthew.e.tolentino@intel.com>
Sun, 26 Mar 2006 09:37:09 +0000 (01:37 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 26 Mar 2006 16:56:54 +0000 (08:56 -0800)
Here's a patch that fixes EFI boot for x86 on 2.6.16-rc5-mm3.  The
off-by-one is admittedly my fault, but the other two fix up the rest.

Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Matt Domsch <Matt_Domsch@dell.com>
Cc: "Tolentino, Matthew E" <matthew.e.tolentino@intel.com>
Cc: "Brown, Len" <len.brown@intel.com>
Cc: Andi Kleen <ak@muc.de>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/i386/kernel/dmi_scan.c
arch/i386/kernel/setup.c
drivers/acpi/tables.c

index 170d4c9f9bc339a5b8d1b7fbb907d2e14a5ed5ee..5efceebc48dc7c5c23789c9ed8b2ea331bb34c35 100644 (file)
@@ -229,7 +229,7 @@ void __init dmi_scan_machine(void)
                        goto out;
 
                rc = dmi_present(p + 0x10); /* offset of _DMI_ string */
-               iounmap(p);
+               dmi_iounmap(p, 32);
                if (!rc)
                        return;
        }
index cec3c925ef99692ebb2f462baa926a2d8b443cc7..6917daa159ab351a4fe86da9aa6ee5276d959df6 100644 (file)
@@ -1058,10 +1058,10 @@ static int __init
 free_available_memory(unsigned long start, unsigned long end, void *arg)
 {
        /* check max_low_pfn */
-       if (start >= ((max_low_pfn + 1) << PAGE_SHIFT))
+       if (start >= (max_low_pfn << PAGE_SHIFT))
                return 0;
-       if (end >= ((max_low_pfn + 1) << PAGE_SHIFT))
-               end = (max_low_pfn + 1) << PAGE_SHIFT;
+       if (end >= (max_low_pfn << PAGE_SHIFT))
+               end = max_low_pfn << PAGE_SHIFT;
        if (start < end)
                free_bootmem(start, end - start);
 
index 31d4f3ffc265b5b2d28055ea1eaec5b317c8f5d4..7f37c7cc5ef1e2aa836d4f5705b599a89156542a 100644 (file)
@@ -587,7 +587,8 @@ int __init acpi_table_init(void)
                return -ENODEV;
        }
 
-       rsdp = (struct acpi_table_rsdp *)__va(rsdp_phys);
+       rsdp = (struct acpi_table_rsdp *)__acpi_map_table(rsdp_phys,
+               sizeof(struct acpi_table_rsdp));
        if (!rsdp) {
                printk(KERN_WARNING PREFIX "Unable to map RSDP\n");
                return -ENODEV;