Win2008 ipmidrv.sys does not load if register spacing = 4


  • I have discovered that the MS ipmidrv.sys silently does not load if the IPMI hardware has register spacing on 4-byte boundaries instead of 1-byte boundaries.  Apparently the driver does not think that an IPMI interface is present, so it does not log anything.

    This is not resolved by the ipmidrv.sys from the service pack.

    The same hardware can be recognized and used by using the Intel imbdrv.sys driver for Windows, or by using the Linux IPMI driver, because these drivers recognize the IPMI register spacing as advertised in the SMBIOS data.

    This information should be detected by the IPMI driver by reading the SMBIOS data in the IPMI record (DMI type 38).   The byte at offset 16 in this record contains the register spacing in its upper 2 bits as follows:  0 = 1-byte spacing, 1 = 4-byte spacing, 2 = 16-byte spacing.

    The effect of the register spacing governs the difference between the KCS command and status registers, for instance:
      0x0ca2, 0x0ca3 = 1-byte register spacing
      0x0ca2, 0x0ca6 = 4-byte register spacing
      0x0ca2, 0x0cb2 = 16-byte register spacing
    Please correct this problem, as described above.   If questions, feel free to email me. 

    Thank you,
    Andy Cress
    Kontron America, Inc.
    Monday, April 18, 2011 3:23 PM

All replies

  • FYI, here is a partial list of some platform vendors whose IPMI firmware uses 4-byte register spacing, so the MS ipmidrv.sys does not currently work with these:
          Pigeon Point

    Wednesday, April 27, 2011 12:41 PM
  • Which flavor of 2008 are you seeing this on? ex. 2008, r2, r2 sp1?  On your partial list of vendors, where did this list come from and how would I verify this on my systems? 
    Friday, May 06, 2011 7:11 PM
  • We use Win2008 R2 and Win2008 R2 SP1.  I do not think that the version matters until register spacing is resolved in ipmidrv.sys by using the DMI type 38 record.

    The list of vendors came from various customers who use IPMI on those platforms, most of those were reported against non-Microsoft OSs which support any register spacing.  I believe that Dell, IBM, and Supermicro have several different IPMI firmware sources, so some have 1-byte spacing, and some have 4-byte spacing.  But nearly all Kontron and Pigeon Point platforms have 4-byte spacing.  I have a Kontron KTC5520/EATX motherboard in my lab that is one example.  

    Friday, May 06, 2011 8:45 PM