Skip to contentSkip to conversation

Fix for handling bad IPMI DMI data

PATCH New Corey Minyard 1 participant 1 message Apr 25, 2005 IPMI

lore
Share & tools
lore
#0 lore raw

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.

drivers/char/ipmi/ipmi_si_intf.c +7 -1
Index: linux-2.6.12-rc2/drivers/char/ipmi/ipmi_si_intf.c
===================================================================
@@ -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;
 	}