Re: ipmi_si feature request: SMBIOS-based autoloading

From: Corey Minyard
Date: Tue Jan 26 2016 - 09:33:06 EST


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