Re: [PATCH v1] module: Add support for default value for module async_probe

From: Saravana Kannan
Date: Fri Jun 03 2022 - 19:17:26 EST


On Fri, Jun 3, 2022 at 8:01 AM Luis Chamberlain <mcgrof@xxxxxxxxxx> wrote:
>
> On Thu, Jun 02, 2022 at 10:54:41PM -0700, Saravana Kannan wrote:
> > Add a module.async_probe kernel command line option that allows enabling
> > async probing for all modules. When this command line option is used,
> > there might still be some modules for which we want to explicitly force
> > synchronous probing, so extend <modulename>.async_probe to take an
> > optional bool input so that async probing can be disabled for a specific
> > module.
> >
> > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx>
> > ---
> > Documentation/admin-guide/kernel-parameters.txt | 8 ++++++--
> > kernel/module/main.c | 11 ++++++++++-
> > 2 files changed, 16 insertions(+), 3 deletions(-)
> >
> > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> > index 710b52d87bdd..32083056bd25 100644
> > --- a/Documentation/admin-guide/kernel-parameters.txt
> > +++ b/Documentation/admin-guide/kernel-parameters.txt
> > @@ -1147,8 +1147,12 @@
> > nopku [X86] Disable Memory Protection Keys CPU feature found
> > in some Intel CPUs.
> >
> > - <module>.async_probe [KNL]
> > - Enable asynchronous probe on this module.
> > + <module>.async_probe[=<bool>] [KNL]
> > + If no <bool> value is specified or if the value
> > + specified is not a valid <bool>, enable asynchronous
> > + probe on this module. Otherwise, enable/disable
> > + asynchronous probe on this module as indicated by the
> > + <bool> value.
>
> The commit log says a bit more. Can you clarify this on the
> documentation?

Oh yeah, forgot to add module.async_probe there! Will do.

> We should strive slowly towards more async probes. This will take
> time.

Agreed.

> To help with further then a Kconfig option which sets this
> to a default to true if enabled would be useful so that no kernel
> parameter is needed at all to set the default. Then you can
> override the default, and blacklist each driver as well.

Based on Linus's view in this thread [1] (I see his point), I don't
think we'll ever enable default async probes for modules as a compile
time config. I think it has to be an explicit decision by whoever
decides the list of modules being loaded in the system (OEMs in the
case of Android, end user in the case of a PC?) to enable the default
to be async probe and then the same entity can decide which modules to
force sync probe on. So, I'm not sure we want to add a Kconfig for
this or enable it by default. Let me know what you think. I'll send
out a v2 with the doc fixes in the meantime.

On a related note, I'm working on default async probes for built-in
drivers, but that's feasible to turn on by default because we can
synchronize everything before we jump to init. And then
<module>.async_probe needs to be passed explicitly for any modules we
want to allow async on.

-Saravana

[1] - https://lore.kernel.org/lkml/CA+55aFxV40V2WvNtJY3EC0F-B9wPk8CV2o1TTTyoF4CoWH7rhQ@xxxxxxxxxxxxxx/