[PATCH v3 0/3] firmware: arm_scmi: fix module auto-loading
Hans de Goede <[email protected]>
| Newsgroups | org.kernel.vger.arm-scmi,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi All, Here is a patch series fixing arm_scmi module autoloading this combines: 1. Patch 1/2 from Bjorn to add support for scmi bus modaliases to modpost: https://lore.kernel.org/all/[email protected]/ 2. RFC 2/2 from Cristian which pre-populates the scmi { protocol, name } tupple list with standard protocol info to break the circular dep: https://patch.msgid.link/[email protected] 1. is not enough by itself because driver module auto-loading requires the devices to already be created for udev to get the necessary uevents based on which udev auto-loads modules. But SCMI devices are only created after their { protocol, name } tupples have been registered which is done from scmi_driver_register(), creating a circular dependency. 2. breaks the circular dependency by pre-populating the { protocol, name } list with the standard protocols. This allows the devices to be created before the module with the driver is loaded, after which module auto loading works the same as it does on any other bus. I've tested this on a T14s Snapdragon laptop with Fedora's kernel config where scmi_cpufreq is a module. With this series scmi_cpufreq correctly autoloads even if it is not included in the initramfs. I've added a 3th patch extending the pre-populating to also include all the { protocol, name } tupples for the in tree SCMI drivers for IMX vendor protocols, so that module auto-loading will work for all in tree drivers. Out of tree drivers can still register new tupples as before but their modules will need to be manually loaded (also as before). Regards, Hans Bjorn Andersson (1): module: add SCMI device table alias support Cristian Marussi (1): firmware: arm_scmi: Pre-register protocol, name tupples for standard protocols Hans de Goede (1): firmware: arm_scmi: Pre-register protocol, name tupples for IMX protocols MAINTAINERS | 1 + drivers/firmware/arm_scmi/bus.c | 75 +++++++++++++++++++++++-------- include/linux/device-id/scmi.h | 19 ++++++++ include/linux/mod_devicetable.h | 1 + include/linux/scmi_protocol.h | 6 +-- scripts/mod/devicetable-offsets.c | 4 ++ scripts/mod/file2alias.c | 11 +++++ 7 files changed, 94 insertions(+), 23 deletions(-) create mode 100644 include/linux/device-id/scmi.h -- 2.55.0