X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fpci%2Fsetup-bus.c;h=82d877c4051f73b5aa86514d999133bb668ff4ad;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=e21250c392731a1f42341b9134fa4fb27d35f104;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index e21250c39..82d877c40 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -57,8 +57,13 @@ pbus_assign_resources_sorted(struct pci_bus *bus) list_for_each_entry(dev, &bus->devices, bus_list) { u16 class = dev->class >> 8; - if (class == PCI_CLASS_DISPLAY_VGA - || class == PCI_CLASS_NOT_DEFINED_VGA) + /* Don't touch classless devices and host bridges. */ + if (class == PCI_CLASS_NOT_DEFINED || + class == PCI_CLASS_BRIDGE_HOST) + continue; + + if (class == PCI_CLASS_DISPLAY_VGA || + class == PCI_CLASS_NOT_DEFINED_VGA) bus->bridge_ctl |= PCI_BRIDGE_CTL_VGA; pdev_sort_resources(dev, &head); @@ -533,16 +538,16 @@ EXPORT_SYMBOL(pci_bus_assign_resources); void __init pci_assign_unassigned_resources(void) { - struct list_head *ln; + struct pci_bus *bus; /* Depth first, calculate sizes and alignments of all subordinate buses. */ - list_for_each(ln, &pci_root_buses) { - pci_bus_size_bridges(pci_bus_b(ln)); + list_for_each_entry(bus, &pci_root_buses, node) { + pci_bus_size_bridges(bus); } /* Depth last, allocate resources and update the hardware. */ - list_for_each(ln, &pci_root_buses) { - pci_bus_assign_resources(pci_bus_b(ln)); - pci_enable_bridges(pci_bus_b(ln)); + list_for_each_entry(bus, &pci_root_buses, node) { + pci_bus_assign_resources(bus); + pci_enable_bridges(bus); } }