This is a long delayed patch set, but I think I have things reworked to make Igor happy with the way ACPI and SMBIOS work. This is more consistent with the way most other things work, anyway. It did require adding stubs for systems without IPMI.
The first nine patches are unchanged. The IPMI firmware configuration storage now holds the firmware information in a data structure and lets it be iterated. SMBIOS and ACPI build the tables with their existing building functions and call out to the IPMI one (or the stub) when the time comes. This required pulling some code out of smbios.c into an include file and making some things global, as IPMI has to be configurable. The BIOS table tests were also modified since the ACPI info is now in the existing SSDT. I've also added a force-off function for external BMCs; an external BMC needs a way to do a hard power-off of the system if the soft power offs fail. Thanks all! -corey