acpiphp: do not initialize existing ioapics
authorSatoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Tue, 12 Sep 2006 17:15:10 +0000 (10:15 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 27 Sep 2006 00:43:54 +0000 (17:43 -0700)
Currently acpiphp initializes all ioapics under the bus on which
hot-add event occured. It also initializes already working ioapics.
This patch fixes this bug.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: MUNEDA Takahiro <muneda.takahiro@jp.fujitsu.com>
Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/pci/hotplug/acpiphp_glue.c

index 7cc782fec70a31af2c248883e60259b5b950ef39..c1001ad81ad48f86379bf126afa3143126638b1c 100644 (file)
@@ -841,6 +841,7 @@ ioapic_add(acpi_handle handle, u32 lvl, void *context, void **rv)
 
 static int acpiphp_configure_ioapics(acpi_handle handle)
 {
+       ioapic_add(handle, 0, NULL, NULL);
        acpi_walk_namespace(ACPI_TYPE_DEVICE, handle,
                            ACPI_UINT32_MAX, ioapic_add, NULL, NULL);
        return 0;
@@ -1075,7 +1076,8 @@ static int enable_device(struct acpiphp_slot *slot)
        pci_bus_assign_resources(bus);
        acpiphp_sanitize_bus(bus);
        acpiphp_set_hpp_values(slot->bridge->handle, bus);
-       acpiphp_configure_ioapics(slot->bridge->handle);
+       list_for_each_entry(func, &slot->funcs, sibling)
+               acpiphp_configure_ioapics(func->handle);
        pci_enable_bridges(bus);
        pci_bus_add_devices(bus);