On 09/08/11 14:24, Manohar Vanga wrote: > Hey Martyn, > >> I think that by refcounting the resources being used we will know whether a >> bridge module is being used or not, thus whether it can be unloaded or not. >> By >> reference counting the use of resources we minimise the chance of poorly >> written drivers using resources, but not registering the fact that they are >> in >> fact using a VME bridge. > > In the end, this discussion is about what we want the bride module reference > count > to represent. I see your point here that it would be really useful to know > what > resources have been allocated. I am just wondering whether the module > refcount is > a good place to give information on allocated resources (rather than the > bridge > module refcount). > > I am not really an expert in these matters but would something like a sysfs > file > be a cleaner approach to providing information on allocated resources within > the > driver? >
That would probably be a better idea. > With this approach, I am also thinking about cases where resources are not > allocated > within the probe call. This can cause issues if the bridge module is removed > after > a successful probe but before the resources are allocated. This would be a > direct > bug :-/ > > If we really don't want explicit module refcounting by drivers, can we > perhaps use > the return value of the probe to automatically do this? eg. in > vme_bus_probe() like > below: > > int ret = 0; > ... > vme_bridge_get(bridge); > if (driver->probe) > ret = driver->probe(vdev); > if (ret) > vme_bridge_put(bridge); > return ret; > > Just a thought. Feel free to shoot it down if you think it's the incorrect > approach :P > After looking at the PCI and RapidIO subsystems, I think this is probably the correct approach. I guess the only quiestion then is at which point is vme_bridge_put() called assuming the probe is successful. I guess at module unload time, though I haven't checked in the PCI and RapidIO code. (Thank you for your patience) Martyn > Thanks! > > -- > /manohar -- Martyn Welch (Principal Software Engineer) | Registered in England and GE Intelligent Platforms | Wales (3828642) at 100 T +44(0)127322748 | Barbirolli Square, Manchester, E [email protected] | M2 3AB VAT:GB 927559189 _______________________________________________ devel mailing list [email protected] http://driverdev.linuxdriverproject.org/mailman/listinfo/devel
