IPMI KCS driver

The driver can be found in src/drivers/ipmi/. It works with BMC that provide a KCS I/O interface as specified in the IPMI standard.

The driver detects the IPMI version, reserves the I/O space in coreboot’s resource allocator and writes the required ACPI and SMBIOS tables.

For developers

To use the driver, select the IPMI_KCS Kconfig and add the following PNP device under the LPC bridge device (in example for the KCS at 0xca2):

 chip drivers/ipmi
   device pnp ca2.0 on end         # IPMI KCS
 end

Note: The I/O base address needs to be aligned to 2.

The following registers can be set:

  • have_nv_storage

    • Boolean

    • If true nv_storage_device_address will be added to SMBIOS type 38.

  • nv_storage_device_address

    • Integer

    • The NV storage address as defined in SMBIOS spec for type 38.

  • bmc_i2c_address

    • Integer

    • The i2c address of the BMC. zero if not applicable.

  • have_apic

    • Boolean

    • If true the apic_interrupt will be added to SPMI table.

  • apic_interrupt

    • Integer

    • The APIC interrupt used to notify about a change on the KCS.

  • have_gpe

    • Boolean

    • If true the gpe_interrupt will be added to SPMI table.

  • gpe_interrupt

    • Integer

    • The bit in GPE (SCI) used to notify about a change on the KCS.

  • wait_for_bmc

    • Boolean

    • Wait for BMC to boot. This can be used if the BMC takes a long time to boot after PoR:

      • AST2400 on Supermicro X11SSH: 34 s

  • bmc_boot_timeout

    • Integer

    • The timeout in seconds to wait for the IPMI service to be loaded. Will be used if wait_for_bmc is true.