Minor update: SystemIM
System IM could be corrupted or not supported by the vpd parser.
Capturing that case and logging PEL with a severity "ERROR".
Tested on simics:
-> Corrupt the system vpd IM value at 0x05FB
dd if=/dev/zero of=/sys/bus/i2c/drivers/at24/8-0050/eeprom bs=1 count=1 seek=1531
000005d0 00 50 46 02 00 00 78 84 2c 00 52 54 04 56 53 42 |.PF...x.,.RT.VSB|
000005e0 50 44 52 10 56 50 44 20 52 4f 4f 54 20 4e 4f 44 |PDR.VPD ROOT NOD|
000005f0 45 20 20 20 50 41 01 59 49 4d 04 00 00 10 01 50 |E PA.YIM.....P|
00000600 46 04 00 00 00 00 78 84 b0 00 52 54 04 56 53 59
-> Execute the vpd parser
root@rainier:/tmp# ./ibm-read-vpd-IM --file /sys/bus/i2c/drivers/at24/8-0050/eeprom
Erroneous/Unsupported IM in System VPD. PEL logged.
std::exception
root@rainier:/tmp#
-> PEL
"Private Header": {
"Section Version": "1",
"Sub-section type": "0",
"Created by": "0x4000",
"Created at": "04/21/2021 05:28:21",
"Committed at": "04/21/2021 05:28:21",
"Creator Subsystem": "BMC",
"CSSVER": "",
"Platform Log Id": "0x50000008",
"Entry Id": "0x50000008",
"BMC Event Log Id": "8"
},
"User Header": {
"Section Version": "1",
"Sub-section type": "0",
"Log Committed by": "0x2000",
"Subsystem": "CEC Hardware: VPD Interface",
"Event Scope": "Entire Platform",
"Event Severity": "Unrecoverable Error",
"Event Type": "Not Applicable",
"Action Flags": [
"Service Action Required",
"Report Externally",
"HMC Call Home"
],
"Host Transmission": "Not Sent"
},
"Primary SRC": {
"Section Version": "1",
"Sub-section type": "1",
"Created by": "0x4000",
"SRC Version": "0x02",
"SRC Format": "0x55",
"Virtual Progress SRC": "False",
"I5/OS Service Event Bit": "False",
"Hypervisor Dump Initiated":"False",
"Power Control Net Fault": "False",
"Backplane CCIN": "",
"Deconfigured": "False",
"Guarded": "False",
"Error Details": {
"Message": "A VPD data exception occurred."
},
"Valid Word Count": "0x09",
"Reference Code": "BD554001",
"Hex Word 2": "00000055",
"Hex Word 3": "00000010",
"Hex Word 4": "00000000",
"Hex Word 5": "00000000",
"Hex Word 6": "00000000",
"Hex Word 7": "00000000",
"Hex Word 8": "00000000",
"Hex Word 9": "00000000",
"Callout Section": {
"Callout Count": "1",
"Callouts": [{
"FRU Type": "Normal Hardware FRU",
"Priority": "Mandatory, replace all with this type as a unit",
"Location Code": "U78DA.ND0.1234567-P0",
"Part Number": "F191014",
"CCIN": "2E2D",
"Serial Number": "YL2E2D010000"
}]
}
},
"Extended User Header": {
"Section Version": "1",
"Sub-section type": "0",
"Created by": "0x2000",
"Reporting Machine Type": "",
"Reporting Serial Number": "",
"FW Released Ver": "",
"FW SubSys Version": "fw1020.00-18.0",
"Common Ref Time": "00/00/0000 00:00:00",
"Symptom Id Len": "20",
"Symptom Id": "BD554001_00000010"
},
"Failing MTMS": {
"Section Version": "1",
"Sub-section type": "0",
"Created by": "0x2000",
"Machine Type Model": "",
"Serial Number": ""
},
"User Data 0": {
"Section Version": "1",
"Sub-section type": "1",
"Created by": "0x2000",
"BMC Version ID": "fw1020.00-18.0-14-g5b4915816",
"BMCState": "Ready",
"ChassisState": "Off",
"HostState": "Off",
"Process Name": "Unknown"
},
"User Data 1": {
"Section Version": "1",
"Sub-section type": "1",
"Created by": "0x2000",
"CALLOUT_INVENTORY_PATH": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
"DESCRIPTION": "System IM value is erroneous/not supported.",
"INVALID IM VALUE": "00001001"
}
}
Signed-off-by: PriyangaRamasamy <priyanga24@in.ibm.com>
Change-Id: I9301ac73e0b4a7a767861a294ce865804d930a2d
diff --git a/ibm_vpd_app.cpp b/ibm_vpd_app.cpp
index 237d001..ca1dd4d 100644
--- a/ibm_vpd_app.cpp
+++ b/ibm_vpd_app.cpp
@@ -888,6 +888,20 @@
{
target = INVENTORY_JSON_EVEREST;
}
+ else
+ {
+ PelAdditionalData additionalData{};
+ const string& baseFruInventoryPath =
+ js["frus"][filePath][0]["inventoryPath"].get_ref<string&>();
+ additionalData.emplace("CALLOUT_INVENTORY_PATH",
+ INVENTORY_PATH + baseFruInventoryPath);
+ additionalData.emplace(
+ "DESCRIPTION", "System IM value is erroneous/not supported.");
+ additionalData.emplace("INVALID IM VALUE", imValStr);
+ createPEL(additionalData, PelSeverity::ERROR, errIntfForInvalidVPD);
+ throw runtime_error(
+ "Erroneous/Unsupported IM in System VPD. PEL logged.");
+ }
// Create the directory for hosting the symlink
fs::create_directories(VPD_FILES_PATH);
@@ -1032,7 +1046,7 @@
catch (exception& e)
{
postFailAction(js, file);
- throw e;
+ throw;
}
}
catch (const VpdJsonException& ex)