Fix for mismatch error codes between CPLD and SEL
Issue: Minor error code values do not match between CPLD and SEL
Fix: Due to logical OR, function to read minor error code was not
getting a chance to execute. Modifed the condition so that left hand
side and right hand side of AND executes.
Tested:
1.Minor code at 0x09 is 01.
Command: i2cdump -y -r 0x00-0x7f 4 0x38
Response:
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: de 01 00 0e 02 09 05 04 02 01 20 00 00 00 00 09 ??.??????? ....?
2. Verified the minor code in Redfish.
Command:
GET: https://<BMC_IP>/redfish/v1/Systems/system/LogServices/EventLog/
Entries
Response:
{
"@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/
Entries/1589118595_2",
"@odata.type": "#LogEntry.v1_4_0.LogEntry",
"Created": "2020-05-10T13:49:55+00:00",
"EntryType": "Event",
"Id": "1589118595_2",
"Message": "BIOS firmware resiliency error. Error reason: BIOS
image authentication failed(MinorCode:0x01).",
"MessageArgs": [
"BIOS image authentication failed(MinorCode:0x01)"
],
"MessageId": "OpenBMC.0.1.BIOSFirmwareResiliencyError",
"Name": "System Event Log Entry",
"Severity": "Critical"
}
Signed-off-by: Chalapathi <chalapathix.venkataramashetty@intel.com>
Change-Id: Ia5c13b25633b5d029fa6b57f444693430cde49d6
diff --git a/service/src/mainapp.cpp b/service/src/mainapp.cpp
index cbd2082..9b45ea2 100644
--- a/service/src/mainapp.cpp
+++ b/service/src/mainapp.cpp
@@ -216,7 +216,7 @@
uint8_t majorErr = 0;
uint8_t minorErr = 0;
if ((0 == intel::pfr::readCpldReg(intel::pfr::ActionType::majorError,
- majorErr)) ||
+ majorErr)) &&
(0 ==
intel::pfr::readCpldReg(intel::pfr::ActionType::minorError, minorErr)))
{