"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