Fix for handling bad IPMI DMI data
PATCH 1/1 Fix for handling bad IPMI DMI data
Ignore the bottom bit of the base address from the DMI data. It is supposed to be set to 1 if it is I/O space. Few systems do this, but this enables the ones that do set it to work properly.
Signed-off-by Corey Minyard <[email protected]>
drivers/char/ipmi/ipmi_si_intf.c +7 -1
@@ -1654,7 +1654,13 @@ } }else {/* Old DMI spec. */ - ipmi_data->base_addr = base_addr; +/* Note that technically, the lower bit of the base +* address should be 1 if the address is I/O and 0 if +* the address is in memory. So many systems get that +* wrong (and all that I have seen are I/O) so we just +* ignore that bit and assume I/O. Systems that use +* memory should use the newer spec, anyway. */ + ipmi_data->base_addr = base_addr &0xfffe ; ipmi_data->addr_space =IPMI_IO_ADDR_SPACE ; ipmi_data->offset =1 ; }