SBMR Get/Send Boot Progress Code support

Implement IPMI commands for boot progress codes by following
DEN0069E_SBMR_2.1. Add configure option `arm-sbmr` to enable
SBMR IPMI commands. Boot progress code will update to Redfish
BootProgress property.

1. Send boot progress code (NetFn 0x2C, Command 0x2)
2. Get boot progress code  (NetFn 0x2C, Command 0x3)

Test:

1. Send boot progress code
   $> ipmitool raw 0x2C 0x02 0xAE 0x1 0x00 0x00 0x00 \
      0x01 0x10 0x01 0x02 0x00
      ae

2. Get boot progress code
   $> ipmitool raw 0x2C 0x3 0xAE
      ae 01 00 00 00 01 10 01 02 00

3. Redfish BootProgess LastState - /redfish/v1/Systems/system
   {
     ...
     "BootProgress": {
       "LastState": "PCIResourceConfigStarted",
       "LastStateTime": "2024-11-14T19:14:22.432272+00:00"
     }
   }

Signed-off-by: John Chung <john.chung@arm.com>
Change-Id: I58e6e322006039fceb8d4212c4f9f6a4b4f9e225
7 files changed
tree: 89652c5d2c4176633351428ee9f7f9faa40ac3ee
  1. app/
  2. dbus-sdr/
  3. docs/
  4. include/
  5. libipmid/
  6. scripts/
  7. softoff/
  8. subprojects/
  9. test/
  10. transport/
  11. user_channel/
  12. xyz/
  13. .build.sh
  14. .clang-format
  15. .clang-tidy
  16. .gitignore
  17. .shellcheck
  18. .travis.yml
  19. apphandler.cpp
  20. apphandler.hpp
  21. chassishandler.cpp
  22. chassishandler.hpp
  23. dcmihandler.cpp
  24. dcmihandler.hpp
  25. error-HostEvent.hpp
  26. fruread.hpp
  27. generate_whitelist.sh
  28. generate_whitelist_create.sh
  29. globalhandler.cpp
  30. groupext.cpp
  31. host-cmd-manager.cpp
  32. host-cmd-manager.hpp
  33. host-interface.cpp
  34. host-interface.hpp
  35. host-ipmid-whitelist.conf
  36. ipmi_fru_info_area.cpp
  37. ipmi_fru_info_area.hpp
  38. ipmiallowlist.hpp
  39. ipmid-new.cpp
  40. ipmisensor.cpp
  41. LICENSE
  42. meson.build
  43. meson.options
  44. OWNERS
  45. read_fru_data.cpp
  46. read_fru_data.hpp
  47. README.md
  48. sbmrhandler.cpp
  49. selutility.cpp
  50. selutility.hpp
  51. sensordatahandler.cpp
  52. sensordatahandler.hpp
  53. sensorhandler.cpp
  54. sensorhandler.hpp
  55. settings.cpp
  56. settings.hpp
  57. storageaddsel.cpp
  58. storageaddsel.hpp
  59. storagehandler.cpp
  60. sys_info_param.cpp
  61. sys_info_param.hpp
  62. systemintfcmds.cpp
  63. systemintfcmds.hpp
  64. transportconstants.hpp
  65. transporthandler.cpp
  66. transporthandler.hpp
  67. whitelist-filter.cpp
README.md

phosphor-host-ipmid

Compile ipmid with default options

meson builddir
ninja -C builddir

Compile ipmid with yocto defaults

meson builddir -Dbuildtype=minsize -Db_lto=true -Dtests=disabled
ninja -C builddir

If any of the dependencies are not found on the host system during configuration, meson automatically gets them via its wrap dependencies mentioned in ipmid/subprojects.

Enable/Disable meson wrap feature

meson builddir -Dwrap_mode=nofallback
ninja -C builddir

Enable debug traces

meson builddir -Dbuildtype=debug
ninja -C builddir

Generate test coverage report

meson builddir -Db_coverage=true -Dtests=enabled
ninja -C builddir test
ninja -C builddir coverage