Re: [PATCH v2 0/2] firmware: arm_scmi: Ensure automatic module loading
Hans de Goede <[email protected]> Thu, 9 Jul 2026 15:22:29 +0200
| Newsgroups | org.kernel.vger.arm-scmi,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk,org.kernel.vger.linux-hwmon,org.kernel.vger.linux-iio,org.kernel.vger.linux-input,org.kernel.vger.linux-kbuild,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm,org.kernel.vger.linux-rtc |
|---|---|
| Message-ID | <[email protected]> |
Hi, On 9-Jul-26 12:10, Sudeep Holla wrote: > On Thu, Jun 18, 2026 at 10:31:12PM +0200, Hans de Goede wrote: >> Hi, >> >> On 18-Jun-26 17:56, Bjorn Andersson wrote: >>> SCMI drivers such as the Arm SCMI CPUfreq driver are allowed to built as >>> modules, but they are then not automatically loaded. Rework the SCMI >>> device table alias support to make modpost consume the information from >>> MODULE_DEVICE_TABLE(scmi, ...) and allow drivers to be loaded based on >>> this information, if known. Also add a protocol-based alias to also >>> trigger driver loading when only the SCMI protocol id is known. >>> >>> Signed-off-by: Bjorn Andersson <[email protected]> >> >> So I just gave this a test spin and unfortunately it does not work. >> >> The problem with Fedora's kernel-config / setup is that the >> request_module() from patch 2/2 runs from the initramfs, but >> the scmi_cpufreq module is only available in the rootfs. >> >> It does work if I explictly add the scmi_cpufreq module to >> the initramfs, then it does get autoloaded. >> >> We really need some place to put a uevent sysfs attr which then >> gets replayed when udev is restarted from the rootfs and then >> re-reads all the uevent files as part of its coldplug >> enumeration. >> > > I don't have much knowledge on uevent to provide any suggestions/help. > But isn't this a generic requirement ? I mean you could have modules > install on the rootfs and not all of them are packed in initramfs ? > Just wondering if that works for other modules, we can examine how > do they work and what are we missing ? scmi is special because the actual devices under /sys/bus/scmi/devices only get created when the module with the driver is loaded because of some funtion/id mapping requiring info from the driver. Patch 2/2 tries to work around this by loading all scmi drivers matching the scmi protocol which is known at bus enumeration time, but this only works if the actual scmi driver is in the initramfs because this done through directly calling modprobe() from the kernel which does not get "replayed" when switching to the real rootfs. And no /sys/bus/scmi/devices/xxx device means no /sys/bus/scmi/devices/xxx/modalias nor /sys/bus/scmi/devices/xxx/uevent which udev uses for coldplug (hotplug event replay) when switching to the real root. The cleanest way to fix this from a how things are supposed to work according to the generic kernel device-model design is to get rid of the creation of the devices being delayed. Which may mean moving some static mapping tables from the driver into the scmi core. I'm not familiar enough with the scmi bus code to be sure. Regards, Hans >