PCI: assign ioapic resource at hotplug
authorSatoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Tue, 12 Sep 2006 17:21:44 +0000 (10:21 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 27 Sep 2006 00:43:54 +0000 (17:43 -0700)
We need to assign resources to ioapics being hot-added. This patch
changes pbus_assign_resources_sorted() to assign resources if the
ioapic has no assigned resources.

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/setup-bus.c

index 47c1071..5440491 100644 (file)
@@ -55,12 +55,19 @@ pbus_assign_resources_sorted(struct pci_bus *bus)
        list_for_each_entry(dev, &bus->devices, bus_list) {
                u16 class = dev->class >> 8;
 
-               /* Don't touch classless devices or host bridges or ioapics.  */
+               /* Don't touch classless devices or host bridges. */
                if (class == PCI_CLASS_NOT_DEFINED ||
-                   class == PCI_CLASS_BRIDGE_HOST ||
-                   class == PCI_CLASS_SYSTEM_PIC)
+                   class == PCI_CLASS_BRIDGE_HOST)
                        continue;
 
+               /* Don't touch ioapics if it has the assigned resources. */
+               if (class == PCI_CLASS_SYSTEM_PIC) {
+                       res = &dev->resource[0];
+                       if (res[0].start || res[1].start || res[2].start ||
+                           res[3].start || res[4].start || res[5].start)
+                               continue;
+               }
+
                pdev_sort_resources(dev, &head);
        }