On 01/15/2010 07:57 PM, Alex Chiang wrote: > Hi Yinghai, > > First, thank you very much for writing the summary in patch 0/11. > I feel like I finally understand what you are trying to do with > this series. > >> +/* >> + * try to release pci bridge resources that is from leaf bridge, >> + * so we can allocate big new one later >> + */ >> +static void __ref pci_bus_release_bridge_resources(struct pci_bus *bus, >> + unsigned long type, >> + enum release_type rel_type) >> +{ >> + struct pci_dev *dev; >> + bool is_leaf_bridge = true; >> + >> + list_for_each_entry(dev, &bus->devices, bus_list) { >> + struct pci_bus *b = dev->subordinate; >> + if (!b) >> + continue; >> + > > How about settting > > is_leaf_bridge = false; > > here, and then you don't need the repeated assignments below? > no that is AND >> + switch (dev->class >> 8) { >> + case PCI_CLASS_BRIDGE_CARDBUS: >> + is_leaf_bridge = false; >> + break; >> + >> + case PCI_CLASS_BRIDGE_PCI: >> + default: >> + is_leaf_bridge = false; >> + if (rel_type == whole_subtree) >> + pci_bus_release_bridge_resources(b, type, >> + whole_subtree); >> + break; >> + } >> + } >> + >> + /* The root bus? */ >> + if (!bus->self) >> + return; > > Won't work correctly on a non-materialized root bridge. > > Use pci_is_root_bus() instead. OK YH -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html