Show option->text of BIOS knob in Redfish response.

GET on /redfish/v1/Registries/BiosAttributeRegistry/BiosAttributeRegistry/
shows list of Attributes under RegistryEntries. Each attribute
corresponds to a knob in BIOS.

If knob in BIOS is of type Enumeration, it will have 'option' with
'text' and 'value'. This text should be mapped to
attribute->Value->ValueDisplayName.

Code changes are made for the same.

Tested
Sample knobs from BIOS.

<knob name="AdaptiveRefreshMgmtLevel" ... >
	<options>
		<option text="Default" value="0x0"/>
		<option text="Level A" value="0x1"/>
		<option text="Level B" value="0x2"/>
		<option text="Level C" value="0x3"/>
	</options>
</knob>
<knob name="ADDDCEn" ... >
	<options>
		<option text="Disable" value="0x0"/>
		<option text="Enable" value="0x1"/>
	</options>
</knob>

Corresponding Redfish response in BiosAttributeRegistry

{
	"AttributeName": "AdaptiveRefreshMgmtLevel",
	"CurrentValue": "0x00",
	"DefaultValue": "0x00",
	"DisplayName": "AdaptiveRefreshMgmtLevel",
	"HelpText": "ARFM Level when ... ",
	"MenuPath": "./",
	"ReadOnly": false,
	"Type": "Enumeration",
	"Value": [
		{
			"ValueDisplayName": "Default",
			"ValueName": "0x0"
		},
		{
			"ValueDisplayName": "Level A",
			"ValueName": "0x1"
		},
		{
			"ValueDisplayName": "Level B",
			"ValueName": "0x2"
		},
		{
			"ValueDisplayName": "Level C",
			"ValueName": "0x3"
		}
	]
},
{
	"AttributeName": "ADDDCEn",
	"CurrentValue": "0x00",
	"DefaultValue": "0x00",
	"DisplayName": "ADDDCEn",
	"HelpText": "Enable/Disable ADDDC Sparing",
	"MenuPath": "./",
	"ReadOnly": false,
	"Type": "Enumeration",
	"Value": [
		{
			"ValueDisplayName": "Disable",
			"ValueName": "0x0"
		},
		{
			"ValueDisplayName": "Enable",
			"ValueName": "0x1"
		}
	]
}

Change-Id: I26795681c45247ea954edf48b1a9da80ace31ae5
Signed-off-by: Arun Lal K M <arun.lal@intel.com>
1 file changed
tree: 72987f26d7ab089a214fe6c32eadb1ec56b03fd9
  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-allowlist.py
  13. ipmi-allowlist.conf
  14. LICENSE
  15. OWNERS
  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