On 10/08/11 10:15, Emilio G. Cota wrote: > On Wed, Aug 10, 2011 at 08:39:07 +0100, Martyn Welch wrote: >> And I think you need to go and do a grep of the code and find out where those >> functions are actually used, rather than blindly relying on the comment. > (snip) >> Go grep the code. > > /me greps once again.. > > RapidIO: there are no rapidIO drivers upstream, only switches > and rionet, which does not manage RapidIO devices (it just sends > Ethernet packets on top of RapidIO's messaging). So obviously > there aren't any callers. > Yes there are. In rio-driver.c for a start: /** * rio_device_probe - Tell if a RIO device structure has a matching RIO device id structure * @dev: the RIO device structure to match against * * return 0 and set rio_dev->driver when drv claims rio_dev, else error */ static int rio_device_probe(struct device *dev) { struct rio_driver *rdrv = to_rio_driver(dev->driver); struct rio_dev *rdev = to_rio_dev(dev); int error = -ENODEV; const struct rio_device_id *id; if (!rdev->driver && rdrv->probe) { if (!rdrv->id_table) return error; id = rio_match_device(rdrv->id_table, rdev); rio_dev_get(rdev); if (id) error = rdrv->probe(rdev, id); if (error >= 0) { rdev->driver = rdrv; error = 0; } else rio_dev_put(rdev); } return error; } Doing what Manohar suggested and I have agreed with. > PCI: pci_dev_get() referenced in 60 files. Another way of > explicitly incrementing the refcount of a pci device is with > pci_get_device(), which searches in the device list for a > particular one by its vendor/device ID. This function is > referenced in 127 files. > Again, in pci-driver.c: static int pci_device_probe(struct device * dev) { int error = 0; struct pci_driver *drv; struct pci_dev *pci_dev; drv = to_pci_driver(dev->driver); pci_dev = to_pci_dev(dev); pci_dev_get(pci_dev); error = __pci_device_probe(drv, pci_dev); if (error) pci_dev_put(pci_dev); return error; } Again, doing as Manohar suggested. For those drivers using pci_get_device() - P313 of the Linux Device Drivers 3rd Ed, under "Old-style PCI Probing". Not a mechanism currently supported for the VME bus. > USB: usb_get_dev() referenced in 75 files. > I've already explained that I don't think the USB bus is good for comparison due to very real differences in bus topology and use. > There are also lots of direct calls to get_device() from .probe > methods of devices not tied to a particular bus. > Which may therefore have nothing to do with a bus. > Guess that was enough grepping. > It seems not quite. >> Suitable bug fixes are welcome. > > I sent a fix (as part of an admittedly large patchset) in > Nov 2010[1], ie 9 months ago, you were sick at the time and > told me you'd have a look at the changes later[2], which > unfortunately never happened, even after pinging you off-list. > Some of those patches were applied: http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/gregkh/staging-2.6.git;a=history;f=drivers/staging/vme;hb=HEAD The remaining patches completely changed the VME bus model. I said at the time I wasn't overly happy with the model you had put forward. Take this as my review: - I am not happy with the proposed alternative model. Sorry for not getting back to you sooner. I'm afraid my TODO list sometimes ends up acting as a stack rather than a FIFO. > Anyway let's forget that, Manohar's patches are what matters now. > Will do. Martyn -- Martyn Welch (Principal Software Engineer) | Registered in England and GE Intelligent Platforms | Wales (3828642) at 100 T +44(0)127322748 | Barbirolli Square, Manchester, E martyn.welch@xxxxxx | M2 3AB VAT:GB 927559189 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel