Re: [PATCH v3 0/4] rust: extend `module!` macro with integer parameter support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Greg KH" <gregkh@xxxxxxxxxxxxxxxxxxx> writes:

> On Fri, Dec 13, 2024 at 04:38:30PM +0100, Andreas Hindborg wrote:
>> "Greg KH" <gregkh@xxxxxxxxxxxxxxxxxxx> writes:
>> > On Fri, Dec 13, 2024 at 01:24:42PM +0100, Andreas Hindborg wrote:
>> >> "Greg KH" <gregkh@xxxxxxxxxxxxxxxxxxx> writes:
>> >> > On Fri, Dec 13, 2024 at 12:30:45PM +0100, Andreas Hindborg wrote:
>> I'm not getting a clear reading on the following, perhaps you can
>> clarify:
>>
>>  - Is the community aligned on dropping module parameters for all new
>>    drivers?
>>    - If so, was this decided upon at some point or is this a fluid
>>      decision that is just manifesting now?
>
> It's something that I've been saying in review comments of drivers for
> many many years now.  Again, it was one of the main reasons we created
> configfs and sysfs all those decades ago, because module parameters just
> do not work properly for drivers in almost all cases.

Thinking a bit about this - are you sure there are no situations where
module parameters is actually the right choice? I could imagine deeply
embedded deployments, potentially with all required modules linked in to
a static kernel image. It is probably desirable to be able to pass
configuration to the modules via the kernel command line in this
situation. If not for configuration in the field, then for a development
situation.

Surely there are also situations in regular PC setups where it is
desirable to pass configuration data to a module, so that it is
available at load time. With configfs, module initialization becomes a
two stage process of first loading and then configuring. That is not
always what you would want.

Since module parameters actually do show up in sysfs as writable
entries, when the right flags are passed, they do feel very similar to
sysfs/configfs for simple use cases. What are the reasons they should
not be usable for these simple use cases?

>
>>  - Does this ban of module parameters also cover cases where backwards
>>    compatibility is desirable?
>
> No, we don't break existing kernel features, but if you are writing a
> new driver, don't add them and then there's no compatibility issue.
>
> We don't normally allow "rewrites" of drivers, but if we do, yes, you
> would have to implement the old features if needed.
>
> As you just seem to want to write an "example" block driver, no need to
> add the module option there, just do it right this time in how to
> properly configure things.
>
>>  - Can we merge this so I can move forward at my current projected
>>    course, or should I plan on dealing with not having this available?
>
> We generally do not want to merge apis without any real users, as it's
> hard to justify them, right?  Also, we don't even know if they work
> properly or not.

While null_blk is just a piece of testing infrastructure that you would
not deploy in a production environment, it is still a "real user". I am
sure we can agree on the importance of testing.

The exercise I am undertaking is to produce a drop in replacement of the
existing C null_blk driver. If all goes well, we are considering to swap
the C implementation for the Rust implementation in X number of years.
Granted - a lot of things have to fall into place for that to happen,
but that is the plan. This plan does not really work well if the two
modules do not have the same interface.

I understand that you would like to phase out module parameters, but I
don't think blocking their use from Rust is the right way to go about
that task. If you really feel that module parameters have no place in
new drivers, I would suggest that to be part of review process for each
individual new driver - not at the stage of enabling module parameters
for Rust in general.


Best regards,
Andreas Hindborg







[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux