PEL creation in case of HW/SW failure.
Creation of PEL in case the parser process fails to parse and/or publish
VPD data.
This commit handles both hardware or software failure and creates PEL
accordingly.
Tested on Simics.
Test procedure:
Step1 : Copy ibm_read_vpd in /tmp folder on simics
Step2 : Run ibm_read_vpd exe with a vpd file path having invalid VPD/ECC or
invalid JSON path. In this case we have given path to VPD file with
invalid VPD data.
command-> ./ibm_read_vpd --file <vpd_file_path>
Step3 : After the execution is over, look for PEL logged using command
"peltool -a"
PEL logged incase of invalid VPD:
[
{
"Private Header": {
"Section Version": "1",
"Sub-section type": "0",
"Created by": "0x4000",
"Created at": "11/27/2020 04:40:00",
"Committed at": "11/27/2020 04:40:00",
"Creator Subsystem": "BMC",
"CSSVER": "",
"Platform Log Id": "0x50000002",
"Entry Id": "0x50000002",
"BMC Event Log Id": "2"
},
"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": "2E2D",
"Error Details": {
"Message": "A VPD data exception occurred."
},
"Valid Word Count": "0x09",
"Reference Code": "BD554001",
"Hex Word 2": "00000055",
"Hex Word 3": "2E2D0010",
"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.ND1.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": "9105-22A",
"Reporting Serial Number": "SIMP10R",
"FW Released Ver": "",
"FW SubSys Version": "fw1020.00-6",
"Common Ref Time": "00/00/0000 00:00:00",
"Symptom Id Len": "20",
"Symptom Id": "BD554001_2E2D0010"
},
"Failing MTMS": {
"Section Version": "1",
"Sub-section type": "0",
"Created by": "0x2000",
"Machine Type Model": "9105-22A",
"Serial Number": "SIMP10R"
},
"User Data 0": {
"Section Version": "1",
"Sub-section type": "1",
"Created by": "0x2000",
"BMC Version ID": "fw1020.00-6-22-gbbd23f832",
"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": "Invalid VPD data"
}
}
]
Signed-off-by: Sunny Srivastava <sunnsr25@in.ibm.com>
Change-Id: Ieb434bb45b4051d8b7b6d4c9022984d5471fc855
diff --git a/const.hpp b/const.hpp
index 40ffc62..e72abff 100644
--- a/const.hpp
+++ b/const.hpp
@@ -69,6 +69,18 @@
constexpr auto kwdVpdInf = "com.ibm.ipzvpd.VINI";
constexpr auto memVpdInf = "com.ibm.ipzvpd.VINI";
constexpr auto ipzVpdInf = "com.ibm.ipzvpd.";
+constexpr auto offsetJsonDirectory = "/var/lib/vpd/";
+constexpr auto mapperObjectPath = "/xyz/openbmc_project/object_mapper";
+constexpr auto mapperInterface = "xyz.openbmc_project.ObjectMapper";
+constexpr auto mapperDestination = "xyz.openbmc_project.ObjectMapper";
+constexpr auto loggerObjectPath = "/xyz/openbmc_project/logging";
+constexpr auto loggerCreateInterface = "xyz.openbmc_project.Logging.Create";
+constexpr auto errIntfForBlankSystemVPD = "com.ibm.VPD.Error.BlankSystemVPD";
+constexpr auto errIntfForInvalidVPD = "com.ibm.VPD.Error.InvalidVPD";
+constexpr auto errIntfForStreamFail = "com.ibm.VPD.Error.InavlidEepromPath";
+constexpr auto errIntfForEccCheckFail = "com.ibm.VPD.Error.EccCheckFailed";
+constexpr auto errIntfForJsonFailure = "com.ibm.VPD.Error.InvalidJson";
+constexpr auto errIntfForBusFailure = "com.ibm.VPD.Error.DbusFailure";
namespace lengths
{