Fix issue on BaseBIOSTable updating

All attributes can be generated, but fail to
modify BaseBIOSTable property due to struct changed.

Tested:
oem command could change BaseBIOSTable correctly.
root@intel-obmc:~# ipmitool raw 0x30 0xd5 2 0 0

Jan 01 00:38:37 intel-obmc ipmid[199]:  ipmiOEMSetPayload : Convert XML into native-dbus DONE
Jan 01 00:38:37 intel-obmc ipmid[199]: generateAttributesData
Jan 01 00:38:37 intel-obmc ipmid[199]: QuietBoot
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICEnable_0
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICPortEnable_0
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICPortEnable_1
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICPortEnable_2
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICPortEnable_3
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICEnable_1
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICPortEnable_4
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICPortEnable_5
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICPortEnable_6
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICPortEnable_7
Jan 01 00:38:37 intel-obmc ipmid[199]: IB1_PXE
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICIOMPortPXEEnable_8
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICIOMPortPXEEnable_9
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICIOMPortPXEEnable_10
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICIOMPortPXEEnable_11
Jan 01 00:38:37 intel-obmc ipmid[199]: IB2_PXE
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICIOMPortPXEEnable_12
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICIOMPortPXEEnable_13
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICIOMPortPXEEnable_14
Jan 01 00:38:37 intel-obmc ipmid[199]: OnboardNICIOMPortPXEEnable_15
Jan 01 00:38:37 intel-obmc ipmid[199]: Pci64BitResourceAllocation

root@intel-obmc:~# busctl call xyz.openbmc_project.BIOSConfigManager /xyz/openbmc_project/bios_config/manager org.freedesktop.DBus.Properties Get ss xyz.openbmc_project.BIOSConfig.Manager BaseBIOSTable --json=pretty |more
{
        "type" : "v",
        "data" : [
                {
                        "type" : "a{s(sbsssvva(sv))}",
                        "data" : {
                                "ADDDCEn" : [
                                        "xyz.openbmc_project.BIOSConfig.Manager.AttributeType.String",
                                        false,
                                        "ADDDC Sparing",
                                        "Enable/Disable Adaptive Double Device Data Correction Sparing.",
                                        "./Advanced/Memory Configuration/Memory RAS and Performance Configuration/ADDDC Sparing",
                                        {
                                                "type" : "s",
                                                "data" : "0x00"
                                        },
                                        {
                                                "type" : "s",
                                                "data" : "0x00"
                                        },
                                        [
                                                [
                                                        "xyz.openbmc_project.BIOSConfig.Manager.BoundType.OneOf",
                                                        {
                                                                "type" : "s",
                                                                "data" : "0x1"
                                                        }
                                                ],
                                                [
                                                        "xyz.openbmc_project.BIOSConfig.Manager.BoundType.OneOf",
                                                        {
                                                                "type" : "s",
                                                                "data" : "0x0"
                                                        }
                                                ]
                                        ]
                                ],
                                "ADREn" : [
                                        "xyz.openbmc_project.BIOSConfig.Manager.AttributeType.String",
                                        false,
                                        "Enable ADR",
                                        "Enables the detecting and enabling of ADR.",
                                        "./Advanced/Memory Configuration/Enable ADR",
                                        {
                                                "type" : "s",
                                                "data" : "0x01"
                                        },

Change-Id: I8c0183c5738d008f617c4e6e1a44a53e3e8bde82
Signed-off-by: Kuiying Wang <kuiying.wang@intel.com>
1 file changed
tree: 8692a675ff214c1c38e542b9f519a971409bf158
  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