aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/acpi
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2007-06-29 10:16:36 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-03 21:09:46 -0400
commit0f8dc2f06560e2ca126d1670a24126ba08357d38 (patch)
tree8828462799ea2dbe8dfbe2940a9ee87aca2de25b /arch/i386/kernel/acpi
parent9d7542f891f22d16ea1465d19d253888e87f7ad6 (diff)
Revert HPET resource reservation
Matthias Lenk reports that the PCI subsystem would move the HPET on SB400/SB600-based systems, where the HPET is in BAR1 of the SMbus controller. The reason? The ACPI layer registered the PCI MMIO range as being busy too early, before PCI enumeration had happened, causing the PCI layer to decide that it should relocate the resources somewhere else. Firmware resources should be marked busy _after_ the PCI enumeration and probing has happened, not before. Remove the too-early reservation, we'll fix it up to do it properly later. In the meantime, this solves the regression. Tested-by: Matthias Lenk <matthias.lenk@amd.com> Cc: Aaron Durbin <adurbin@google.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/i386/kernel/acpi')
-rw-r--r--arch/i386/kernel/acpi/boot.c19
1 files changed, 0 insertions, 19 deletions
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index 280898b045b2..3e497fd028e4 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -636,29 +636,10 @@ static int __init acpi_parse_hpet(struct acpi_table_header *table)
636 return -1; 636 return -1;
637 } 637 }
638 638
639#define HPET_RESOURCE_NAME_SIZE 9
640 hpet_res = alloc_bootmem(sizeof(*hpet_res) + HPET_RESOURCE_NAME_SIZE);
641 if (hpet_res) {
642 memset(hpet_res, 0, sizeof(*hpet_res));
643 hpet_res->name = (void *)&hpet_res[1];
644 hpet_res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
645 snprintf((char *)hpet_res->name, HPET_RESOURCE_NAME_SIZE,
646 "HPET %u", hpet_tbl->sequence);
647 hpet_res->end = (1 * 1024) - 1;
648 }
649
650 hpet_address = hpet_tbl->address.address; 639 hpet_address = hpet_tbl->address.address;
651 printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", 640 printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n",
652 hpet_tbl->id, hpet_address); 641 hpet_tbl->id, hpet_address);
653 642
654 res_start = hpet_address;
655
656 if (hpet_res) {
657 hpet_res->start = res_start;
658 hpet_res->end += res_start;
659 insert_resource(&iomem_resource, hpet_res);
660 }
661
662 return 0; 643 return 0;
663} 644}
664#else 645#else