Redfish supports the BIOS Attribute Registry, which provides users with a list of BIOS attributes supported in the BIOS configuration. To incorporate BIOS attribute registry support in openBMC, BmcWeb is designed to read data from the Base BIOS Table. PLDM populates the Base BIOS Table for the BIOS Config Manager based on BIOS JSON files. BIOS functionality is integrated into PLDM according to the guidelines in the PLDM BIOS Specification. BIOS attributes, also referred to as BIOS parameters or configuration settings, are structured within JSON files. Each attribute is defined by its name, type, and type-specific metadata. PLDM parses BIOS JSON file and creates the Base BIOS Table hosted by BIOS Config Manager. The design is documented in DesignDoc. Redfish supports BIOS Attribute registry, which provides users with the list of BIOS attributes supported in the BIOS configuration. The BIOS Attribute registry data is supposed to be derived from Base BIOS Table. PLDM populates the Base BIOS Table for BIOS Config Manager based on BIOS Json files.
After the JSON files are parsed, pldm would also create the string table, attribute table, and attribute value table as per Section7 in PLDM BIOS Specification. Those BIOS tables are exchanged with remote PLDM terminus using the GetBiosTable
command as defined in DSP0247_1.0.0.pdf Section 8.1. All the bios attribute json files are kept under OEM
Path. BIOS json configuration is provided in bios_attr.json file which contains attributes of type enum, integer and string.
Integer Attribute details as documented at Table9 of PLDM BIOS Specification:
{ "entries": [ { "attribute_type": "integer", "attribute_name": "Attribute Name", "lower_bound": "The lower bound on the integer value", "upper_bound": "The upper bound on the integer value", "scalar_increment": "The scalar value that is used for the increments to this integer ", "default_value": "The default value of the integer", "help_text": "Help text about attribute usage", "display_name": "Attribute Display Name", "read_only": "Read only Attribute" } ] }
Enum Attribute details as documented at Table6 of PLDM BIOS Specification:
{ "entries": [ { "attribute_type": "enum", "attribute_name": "Attribute Name", "possible_values": [ "An array of character strings of variable to indicate the possible values of the BIOS attribute" ], "default_values": "Default value", "help_text": "Help text about attribute usage", "display_name": "Display Name", "read_only": "Read only Attribute" } ] }
String Attribute details as documented at Table7 of PLDM BIOS Specification:
{ "entries": [ { "attribute_type": "string", "attribute_name": "Attribute Name", "string_type": "It specifies the character encoding format, which can be ASCII, Hex, UTF-8, UTF-16LE, or UTF-16BE. Currently, only ASCII is supported", "minimum_string_length": "The minimum length of the string in bytes", "maximum_string_length": "The maximum length of the string in bytes", "default_string": "The default string itself", "help_text": "Help text about attribute usage", "display_name": "Attribute Display Name", "read_only": "Read only Attribute" } ] }
As PLDM BIOS Attributes may differ across platforms and systems, supporting system-specific BIOS attributes is crucial. To achieve this, BIOS JSON files are organized under folders named after the system type. System type information is retrieved from the Entity Manager service, which hosts the Compatible Interface.
This interface dynamically populates the Names property with system type information. However, determining the system type in the application space may take some time since the compatible interface and the Names property are dynamically created by the Entity Manager. Consequently, BIOS tables are lazily constructed upon receiving the system type.
To enable system-specific BIOS attribute support within PLDM, the meson option system-specific-bios-json
can be utilized. With system-specific-bios-json
option enabled
BIOS JSON files specific to the system type are fetched during runtime.