]> git.hungrycats.org Git - linux/commitdiff
[PATCH] Improper mapping of ACPI-HPET table
authorVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Thu, 13 Nov 2003 09:03:02 +0000 (01:03 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Thu, 13 Nov 2003 09:03:02 +0000 (01:03 -0800)
Early ACPI table parse for HPET tables has a bug, where in it
does not do proper set_fixmap for ACPI-HPET table.

This bug was lost in oversight, and was not noticed during
my testing too, as the ACPI-HPET table on all my test
systems happened to be in 1st Gig of memory (where __va()
will do the job).

arch/i386/kernel/acpi/boot.c

index 218a7c900e5b5a75d2a77da5802871072d596034..c68d6a9d2be18cbf7b3982686f6348c0b0794951 100644 (file)
@@ -304,7 +304,14 @@ static int __init acpi_parse_hpet(unsigned long phys, unsigned long size)
 {
        struct acpi_table_hpet *hpet_tbl;
 
-       hpet_tbl = __va(phys);
+       if (!phys || !size)
+               return -EINVAL;
+
+       hpet_tbl = (struct acpi_table_hpet *) __acpi_map_table(phys, size);
+       if (!hpet_tbl) {
+               printk(KERN_WARNING PREFIX "Unable to map HPET\n");
+               return -ENODEV;
+       }
 
        if (hpet_tbl->addr.space_id != ACPI_SPACE_MEM) {
                printk(KERN_WARNING PREFIX "HPET timers must be located in "