Separately handle RestrictionMode & POSTComplete

Having single try catch to get 2 separate D-Bus properties from
different services resulted in incorrect value for 2nd property.
In the previous implementation, when `RestrictionModeService` is
not initialized it will throw and return. In this case it was
missing to read the `OperatingSystemState` property and it was
defaulting postComplete as true but actually it can be false.

The above case resulted in a a situation where BMC blocked the
IPMI commands(Over KCS trust policy- DenyAll & Whitelist ) over
KCS channel even before BIOS completes booting. As a result BIOS
never get response for IPMI commands like getDeviceID(In DenyAll mode)
and caused further issues.

Separate out these into seperate try catch to avoid above issue.
Also updated the function to use getDbusProperty() API.

Tested: Verified postComplete value is getting cached correctly even
if the restrictionModeService is not up and running.

Signed-off-by: Arun P. Mohanan <arun.p.m@linux.intel.com>
Change-Id: I394a7c46703e917b0075da6cc5469de1b66a9b7a
1 file changed
tree: 331ab9b9da557362d56a5d13cbc2c04f6ac9d8ba
  1. cmake/
  2. docs/
  3. include/
  4. non-yocto/
  5. src/
  6. tests/
  7. .clang-format
  8. .gitignore
  9. cmake-format.json
  10. CMakeLists.txt
  11. CMakeLists.txt.in
  12. generate-whitelist.py
  13. ipmi-whitelist.conf
  14. LICENSE
  15. MAINTAINERS
  16. 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