On Wed, Nov 28, 2018 at 04:32:26PM -0800, Alexander Duyck wrote: > Probe devices asynchronously instead of the driver.
> +static void __driver_attach_async_helper(void *_dev, async_cookie_t cookie) > +{ > + struct device *dev = _dev; > + struct device_driver *drv; > + > + __device_driver_lock(dev, dev->parent); > + > + /* > + * If someone attempted to bind a driver either successfully or > + * unsuccessfully before we got here we should just skip the driver > + * probe call. > + */ > + drv = dev_get_drv_async(dev); > + if (drv && !dev->driver) > + driver_probe_device(drv, dev); I believe this should mean drivers which have async work on probe can deadlock. For instance, if a driver does call async_schedule() or a derivative call does this for it, the kernel will call async_synchronize_full() and I believe we deadlock. Are we sure most subsystems which would use async probe will not have an async_schedule() call? Luis _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm