The IPMI driver would not auto-load from DMI tables. So these patches creates a platform device from an IPMI DMI table entry, and then modify the IPMI driver to handle all this.
I followed how ACPI works mostly, with a fwnode and such. But greatly simplified, of course :). I'm no sure if patch 4 is done in the right place. Maybe it would be better in the IPMI driver directory? But it's pretty clean where it is. Also, I wasn't quite sure about the name of the device. If the device was named ipmi_si or ipmi_ssif, the driver override would not be required, but then you really couldn't tell it came from DMI. You could also create a firmware_node like ACPI does, but that might be overkill. -corey