Andy Shevchenko wrote: > On Tue, Jun 25, 2013 at 7:22 PM, Mika Westerberg > <mika.westerberg@xxxxxxxxxxxxxxx> wrote: > > > The new function stops and removes the device if it doesn't respond. > > If the device responds and it's a bus we apply the function to all > > subdevices recursively. > > > > It's useful for hotplug bus check case, when you need drop all unplugged > > devices before looking for new ones. > > One comment below. > > > +void pci_trim_stale_devices(struct pci_dev *dev) > > +{ > > + struct pci_bus *bus = dev->subordinate; > > + struct pci_dev *child, *tmp; > > + bool alive; > > + u32 l; > > + > > + /* check if the device responds */ > > + alive = pci_bus_read_dev_vendor_id(dev->bus, dev->devfn, &l, 0); > > + if (!alive) > > + pci_stop_and_remove_bus_device(dev); > > + > > + if (alive && bus) > > + list_for_each_entry_safe(child, tmp, &bus->devices, bus_list) > > + pci_trim_stale_devices(child); > > It's not a tail call anyway, so, what about > > if (!pci_bus_read_dev_vendor_id(dev->bus, dev->devfn, &l, 0)) { > pci_stop_and_remove_bus_device(dev); > } else if (bus) { > list_for_each_entry_safe(child, tmp, &bus->devices, bus_list) > pci_trim_stale_devices(child); > } Why? It looks uglier. -- Kirill A. Shutemov -- 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