[PATCH][BUGFIX] Improper mapping of ACPI-HPET table

From: Pallipadi, Venkatesh
Date: Thu Nov 13 2003 - 13:14:21 EST



Hi,

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).

Attached patch fixes the bug. Please apply.

Thanks,
-Venkatesh

--- linux-2.6.0-test9-bk17/arch/i386/kernel/acpi/boot.c.org 2003-11-13 12:10:18.000000000 -0800
+++ linux-2.6.0-test9-bk17/arch/i386/kernel/acpi/boot.c 2003-11-13 12:11:27.000000000 -0800
@@ -304,7 +304,14 @@ static int __init acpi_parse_hpet(unsign
{
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 "


Attachment: hpet_va_bug_test9.patch
Description: hpet_va_bug_test9.patch