Michal Clapinski wrote:
> Comments in linux/device/driver.h say that the goal is to do async
> probing on all devices. The current behavior unnecessarily slows down
> the boot by synchronous probing dax_pmem devices, so let's change that.
> 
> Signed-off-by: Michal Clapinski <[email protected]>
> ---
>  drivers/dax/pmem.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/dax/pmem.c b/drivers/dax/pmem.c
> index bee93066a849..737654e8c5e8 100644
> --- a/drivers/dax/pmem.c
> +++ b/drivers/dax/pmem.c
> @@ -77,6 +77,7 @@ static struct nd_device_driver dax_pmem_driver = {
>       .probe = dax_pmem_probe,
>       .drv = {
>               .name = "dax_pmem",
> +             .probe_type = PROBE_PREFER_ASYNCHRONOUS,
>       },
>       .type = ND_DRIVER_DAX_PMEM,
>  };

Hi Michal,

Apologies for not commenting earlier. When this first flew by I paused
because libnvdimm predated some of the driver core work on asynchronous
and has some local asynchronous registration.

Can you say a bit more about how this patch in particular helps your
case? For example, the pmem devices registered by memmap= (nd_e820
driver), should end up in the nd_async_device_register() path.

So even though the final attach is synchronous with device arrival, it
should still be async with respect to other device probing.

However, I believe that falls back to synchronous probing if the driver
is loaded after the device has already arrived. Is that the case you are
hitting?

I am ok with this in concept, but if we do this it should be done for
all dax drivers, not just dax_pmem.

Reply via email to