On Mon, Sep 27, 2021 at 10:27:28AM -0700, David E. Box wrote: > On Mon, 2021-09-27 at 06:04 +0200, Greg KH wrote: > > On Sun, Sep 26, 2021 at 06:15:16PM -0700, David E. Box wrote: > > > > > +static struct platform_driver sdsi_driver = { > > > > > + .driver = { > > > > > + .name = SDSI_DEV_NAME, > > > > > + .dev_groups = sdsi_groups, > > > > > + }, > > > > > + .probe = sdsi_probe, > > > > > + .remove = sdsi_remove, > > > > > +}; > > > > > +module_platform_driver(sdsi_driver); > > > > > > > > What causes the platform to know to register, and enable, this platform > > > > driver? Shouldn't there be some hardware involved that is discoverable > > > > to enable it to load dynamically? > > > > > > Ah. The patch that adds the SDSi platform device string was added to a series for the intel_pmt > > > MFD > > > driver and it's still waiting review. I see that complicates things. I can combine the two series > > > together. > > > > Do you have a pointer to the lore.kernel.org location of that series? > > https://lore.kernel.org/all/20210922213007.2738388-1-david.e.box@xxxxxxxxxxxxxxx/ > > > > > Your code right here will bind to any system that it is loaded on, a > > very dangerous thing... > > It won't. It uses module alias to load against the SDSi specific MFD cell. module aliases do not prevent someone from building the driver into their kernel, or doing a simple 'modprobe'. You need to bind your driver to a real hardware resource (and reject it if it is not present), otherwise this driver will break systems quite easily. And again, why is this a platform driver and not just a "real" device on a bus? Heck, why not just use the auxiliary bus for stuff like this, why are you craming pci attributes into the MFD subsystem? thanks, greg k-h