On Mon, Jul 28, 2014 at 06:30:29PM +0000, Yuval Mintz wrote: > > On Mon, Jul 28, 2014 at 06:52:48PM +0200, Luis R. Rodriguez wrote: > > > On Mon, Jul 28, 2014 at 03:46:32PM +0000, Yuval Mintz wrote: > > > > Sorry for not being clear, but I didn't meant 'what guarantees that the device > > > > will be added to the deferred probe', but rather what guarantees that the > > > > deferred workqueue will be scheduled. > > > > > > > > To the best of my knowledge the deferring mechanism works only if one device > > > > is dependent upon another, e.g., for Multi-function devices where one device > > > > probe is dependent upon the others - which are soon-to-be probed. > > > > > > The workqueue will be kicked when driver_deferred_probe_trigger() gets > > > poked, we do that in the late_initcall(deferred_probe_initcall), it > > > also gets flushed there with a flush_workqueue(deferred_wq). > > > But come to think of it that will work well for devices already plugged in > > so indeed I think that driver_deferred_probe_add() needs a check added > > for for if (!driver_deferred_probe_enable) then we have to > > driver_deferred_probe_trigger(). The driver_deferred_probe_enable is set > > to false upon init, but later on late init it gets set to true so with > > that check we'd only generate the trigger after late init call. > > > I can fold that in the v2. > > > Luis > > But what about modules being added after the init-calls? If they try try to use this > mechanism, what guarantees they'll eventually get probed? bus_probe_device --> device_attach() --> __device_attach() --> driver_probe_device() --> __driver_probe_device() --> driver_deferred_probe_add() And with the new hunk I mentioned I'd add then we'd trigger the workqueue if its after late init. The change is in v2 series. Luis -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html