Messages in this thread Patch in this message | | | Date | Thu, 20 Feb 2003 16:45:18 -0800 | From | Greg KH <> | Subject | Re: [PATCH] PCI fixes for 2.5.62 |
| |
ChangeSet 1.1006, 2003/02/20 16:32:48-08:00, louis.zhuang@linux.co.intel.com
[PATCH] PCI: list code cleanup
Cleans up the list handling in a few places within the pci core.
diff -Nru a/drivers/pci/probe.c b/drivers/pci/probe.c --- a/drivers/pci/probe.c Thu Feb 20 16:46:23 2003 +++ b/drivers/pci/probe.c Thu Feb 20 16:46:23 2003 @@ -556,10 +556,9 @@ int __devinit pci_bus_exists(const struct list_head *list, int nr) { - const struct list_head *l; + const struct pci_bus *b; - for(l=list->next; l != list; l = l->next) { - const struct pci_bus *b = pci_bus_b(l); + list_for_each_entry(b, list, node) { if (b->number == nr || pci_bus_exists(&b->children, nr)) return 1; } diff -Nru a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c --- a/drivers/pci/setup-bus.c Thu Feb 20 16:46:23 2003 +++ b/drivers/pci/setup-bus.c Thu Feb 20 16:46:23 2003 @@ -39,14 +39,13 @@ static int __devinit pbus_assign_resources_sorted(struct pci_bus *bus) { - struct list_head *ln; + struct pci_dev *dev; struct resource *res; struct resource_list head, *list, *tmp; int idx, found_vga = 0; head.next = NULL; - for (ln=bus->devices.next; ln != &bus->devices; ln=ln->next) { - struct pci_dev *dev = pci_dev_b(ln); + list_for_each_entry(dev, &bus->devices, bus_list) { u16 class = dev->class >> 8; if (class == PCI_CLASS_DISPLAY_VGA @@ -201,15 +200,14 @@ static void __devinit pbus_size_io(struct pci_bus *bus) { - struct list_head *ln; + struct pci_dev *dev; struct resource *b_res = bus->resource[0]; unsigned long size = 0, size1 = 0; if (!(b_res->flags & IORESOURCE_IO)) return; - for (ln=bus->devices.next; ln != &bus->devices; ln=ln->next) { - struct pci_dev *dev = pci_dev_b(ln); + list_for_each_entry(dev, &bus->devices, bus_list) { int i; for (i = 0; i < PCI_NUM_RESOURCES; i++) { @@ -250,7 +248,7 @@ static void __devinit pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long type) { - struct list_head *ln; + struct pci_dev *dev; unsigned long min_align, align, size; unsigned long aligns[12]; /* Alignments from 1Mb to 2Gb */ int order, max_order; @@ -261,8 +259,7 @@ max_order = 0; size = 0; - for (ln=bus->devices.next; ln != &bus->devices; ln=ln->next) { - struct pci_dev *dev = pci_dev_b(ln); + list_for_each_entry(dev, &bus->devices, bus_list) { int i; for (i = 0; i < PCI_NUM_RESOURCES; i++) { @@ -322,11 +319,12 @@ void __devinit pci_bus_size_bridges(struct pci_bus *bus) { - struct list_head *ln; + struct pci_bus *b; unsigned long mask, type; - for (ln=bus->children.next; ln != &bus->children; ln=ln->next) - pci_bus_size_bridges(pci_bus_b(ln)); + list_for_each_entry(b, &bus->children, node) { + pci_bus_size_bridges(b); + } /* The root bus? */ if (!bus->self) @@ -350,20 +348,16 @@ void __devinit pci_bus_assign_resources(struct pci_bus *bus) { - struct list_head *ln; + struct pci_bus *b; int found_vga = pbus_assign_resources_sorted(bus); if (found_vga) { - struct pci_bus *b; - /* Propagate presence of the VGA to upstream bridges */ for (b = bus; b->parent; b = b->parent) { b->resource[0]->flags |= IORESOURCE_BUS_HAS_VGA; } } - for (ln=bus->children.next; ln != &bus->children; ln=ln->next) { - struct pci_bus *b = pci_bus_b(ln); - + list_for_each_entry(b, &bus->children, node) { pci_bus_assign_resources(b); pci_setup_bridge(b); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |