Reliably report the BMC Ready state

A very rare corner case was found when reporting BMC Ready. The D-Bus
matching function needed to be initialized prior to reading the
associated D-Bus property and saving it to a global variable.

There was a small slice of time where the D-Bus entry could be
updated, and the associated update event dropped.

A test script was created to increase the likelihood of landing in the
critical point where the BMC Ready event is dropped.

Tested:
Ran the test script and it failed in under 30 runs.
Ran the same script on this change, which ran for 370+ passes.

Change-Id: Ic4fca745452eee392e8ff5a3f1b5f39200dfc21d
Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
1 file changed
tree: de78bc4ef02b3e1f6fec0ddf9bd13b4e81a9d15d
  1. docs/
  2. include/
  3. src/
  4. subprojects/
  5. tests/
  6. .clang-format
  7. .gitignore
  8. generate-allowlist.py
  9. ipmi-allowlist.conf
  10. LICENSE
  11. meson.build
  12. meson.options
  13. OWNERS
  14. README.md
README.md

Intel IPMI OEM support library

This component is intended to provide Intel-specific IPMI[3] command handlers for OpenBMC. These handlers are intended to integrate BMC with servers based on Intel architecture.

Overview

intel-ipmi-oem serves as an extension[1] to OpenBMC IPMI daemon[2]. It is compiled as a shared library and intended to both:

  • override existing implementation of standard IPMI commands to comply with Intel-specific solutions,
  • provide implementation for non-standard OEM extensions.

Capabilities

Related features provided by the library are grouped in separate source files. Main extensions to vanilla OpenBMC IPMI stack are the following:

  • Acquiring SMBIOS data over IPMI
  • Commands for better integration with Intel hardware
  • Firmware update extensions
  • Extended parsing of IPMI Platform Events[4]

References

  1. OpenBMC IPMI Architecture
  2. Phosphor IPMI Host
  3. IPMI Specification v2.0
  4. Intel Platform Events parsing