On 01/24/2016 07:45 PM, Andy Lutomirski wrote:
ipmi_si doesn't autoload on systems where it's found via SMBIOS. Could that be fixed?
I'm not really sure. I kind of assumed this was handled in userland like the ACPI tables. I don't think there are many systems that have SMBIOS and not ACPI, so I'm not sure of the impact here or what to do.
If I were doing it, I'd suggest rigging up some code that's compiled in to the main kernel even if ipmi_si is a module that creates the platform device if the dmi device is there and then set up a modalias so that the platofrm device causes ipmi_si to load. (In general, having the same driver create the platform device and register the platform driver means that autoloading is unlikely to work right. See arch/x86/kernel/pmem.c for an example of a weird legacy device that gets this right.)
This sounds like kind of a hack.
Alternatively, maybe /sys/firmware/dmi could learn how to advertise modaliases. But that might be a giant mess to solve a tiny problem.
This sounds like the right way, but you are probably right. Are there any other resources that could benefit from this? I"m guessing not. There is already a "dmi_save_ipmi_device" function that gets called when scanning the SMBIOS table (see drivers/firmware/dmi_scan.c). Maybe a tie-in there? That happens pretty early, though, I'm not sure if it's too early. Of course it would be easy to have a file like pmem.c that detects if an IPMI device is in the SMBIOS table and create a platform device for it. Are you willing to do this work? -corey

