commit | 0eb8cacc07375beb3c0b6008dc5d5b6c7090ae37 | [log] [tgz] |
---|---|---|
author | priyaram <priyanga24@in.ibm.com> | Wed Sep 20 09:16:46 2023 +0530 |
committer | SunnySrivastava <sunnsr25@in.ibm.com> | Fri Jan 05 05:41:54 2024 +0000 |
tree | 310691e0ff439a1ccfa671975bd416228f371c20 | |
parent | 777f349e9c7ac36a12993112629150718471ed1c [diff] |
vpd-tool:Fix system VPD and its backup VPD vpd-tool fixSystemVPD implementation to backup and restore system VPD to and from the backup VPD if the backup VPD path is found in vpd inventory JSON. Test: (Truncating the output in commit message) ===>>CASE 1: Option 6 to update new value on both backup and primary hardware and its cache. vpd-tool --fixSystemVPD ============================================================= S.No Record Keyword Backup Data Primary Data Data Mismatch 1 UTIL D0 0x01 0x01 NO ============================================================ >> Enter the new value to update on both primary & backup. Value should be in ASCII or in HEX(prefixed with 0x) : 0x00 busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth com.ibm.ipzvpd.VSBK D0 ay 1 0 busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard com.ibm.ipzvpd.UTIL D0 ay 1 0 ===>>CASE 2: Option 4 to update primary with backup data vpd-tool -w -O /system/chassis/motherboard -R LXR0 -K LX -V 0x333435363738 Data updated successfully vpd-tool --fixSystemVPD ================================================================================= S.No Record Keyword Backup Data Primary Data Data Mismatch 6 LXR0 LX 0x310004010030007b 0x333435363738007b YES ================================================================================= Enter 4 => If you choose the data on backup as the right value : 4 busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard com.ibm.ipzvpd.LXR0 LX ay 8 49 0 4 1 0 48 0 123 ===>>CASE 3: Option 5 to update backup with primary value vpd-tool -w -O /system/chassis/motherboard/base_op_panel_blyth -R VSBK -K FC -V "abcd" Data updated successfully vpd-tool --fixSystemVPD ================================================================================= S.No Record Keyword Backup Data Primary Data Data Mismatch 7 VCEN FC 0x616263642d303031 0x324534412d303031 YES ================================================================================= Enter 5 => If you choose the data on primary as the right value : 5 busctl get-property xyz.openbmc_project.Inventory.Manager /xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth com.ibm.ipzvpd.VSBK FC ay 8 50 69 52 65 45 48 48 49 ===>>CASE 4: Option 2 to update all mismatching keywords with its primary data vpd-tool -w -O /system/chassis/motherboard/base_op_panel_blyth -R VSBK -K FC -V "abcd" Data updated successfully vpd-tool -w -O /system/chassis/motherboard/base_op_panel_blyth -R VSBK -K D0 -V "abcd" Data updated successfully vpd-tool --fixSystemVPD ================================================================================= S.No Record Keyword Backup Data Primary Data Data Mismatch ================================================================================= 1 UTIL D0 0x61 0x01 YES ------------------------------------------------------------------------------- 7 VCEN FC 0x616263642d303031 0x324534412d303031 YES ================================================================================= Enter 2 => If you choose the data on primary for all mismatching record-keyword pairs : 2 Data updated successfully for all mismatching record-keyword pairs by choosing their corresponding data from primary VPD. vpd-tool -r -O /system/chassis/motherboard/base_op_panel_blyth -R VSBK -K FC { "/system/chassis/motherboard/base_op_panel_blyth": { "FC": "2E4A-001" } } vpd-tool -r -O /system/chassis/motherboard/base_op_panel_blyth -R VSBK -K D0 { "/system/chassis/motherboard/base_op_panel_blyth": { "D0": "0x01" } } ===>>CASE 5: Option 1 vpd-tool -w -O /system/chassis/motherboard -R UTIL -K D0 -V "abcd" Data updated successfully vpd-tool -w -O /system/chassis/motherboard -R UTIL -K D1 -V "abcd" Data updated successfully vpd-tool --fixSystemVPD ================================================================================= S.No Record Keyword Backup Data Primary Data Data Mismatch ================================================================================= 1 UTIL D0 0x01 0x61 YES ------------------------------------------------------------------------------- 2 UTIL D1 0x00 0x61 YES ================================================================================= Enter 1 => If you choose the data on backup for all mismatching record-keyword pairs: 1 Data updated successfully for all mismatching record-keyword pairs by choosing their corresponding data from backup. Exit successfully. vpd-tool -r -O /system/chassis/motherboard -R UTIL -K D0 { "/system/chassis/motherboard": { "D0": "0x01" } } vpd-tool -r -O /system/chassis/motherboard -R UTIL -K D1 { "/system/chassis/motherboard": { "D1": "0x00" } } Change-Id: I0cfa5c869d4c44d2dd74916b5284fa2ad9b4f398 Signed-off-by: Priyanga Ramasamy <priyanga24@in.ibm.com>
This repository hosts code for OpenPower and IBM IPZ format VPD parsers. Both OpenPower VPD and IPZ VPD formats are structured binaries that consist of records and keywords. A record is a collection of multiple keywords. More information about the format can be found here.
The repository consists of two distinct applications, which are:
This is a build-time YAML driven application that parses the OpenPower VPD format and uses the YAML configuration (see extra-properties-example.yaml and writefru.yaml) to determine:
The application instance must be passed in the file path to the VPD (this can, for example, be a sysfs path exposed by the EEPROM device driver) and also the D-Bus object path(s) that EEPROM data needs to be published under.
This parser is can be built by passing in the --enable-ibm-parser
configure option. This parser differs from the OpenPower VPD parser in the following ways:
#
and are > 255 bytes in length).Making the application runtime JSON driven allows us to support multiple systems (with different FRU configurations) to be supported in a single code image as well as making the application more flexible for future improvements.