Nvidia add cmet-info
Add decoding of more specific Error codes.
Unit tests pass.
Change-Id: Ia0ca0dfdf550381da435b0fb9041b664784f7476
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/examples/nvidia_cmet_info.cperhex b/examples/nvidia_cmet_info.cperhex
new file mode 100644
index 0000000..c643086
--- /dev/null
+++ b/examples/nvidia_cmet_info.cperhex
@@ -0,0 +1,27 @@
+435045520000ffffffff0100030000000200000028030000195023002103
+252000000000000000000000000000000000000000000000000000000000
+0000000078e401a97311ef1196a85fa6bef5eea4acd5a9090452144296e5
+94992e752bcd040000000000000000000000000000000000000000000000
+0000000000000000c8000000600200000000010000000000f244526d1227
+ec11bea7cb3fdb95c7864a334fcc63c5eb118f889f7ac76c6f0c03000000
+0000000000000000000000000000000000000000434d45542d494e464f00
+000000000000000000000300240000000000000000000000000001000080
+000000000400070001000000010000800000000001000000020000000100
+008000000000010004000300000001000080000000000100000004000000
+010000800000000001000400050000000100008000000000010000000600
+000001000080000000000100040007000000010000800000000001000000
+080000000100008000000000010004000900000001000080000000000100
+00000a0000000100008000000000010004000b0000000100008000000000
+010000000c0000000100008000000000010004000d000000010000800000
+0000010000000e0000000100008000000000010004000f00000001000080
+000000000100000010000000010000800000000001000c00110000000100
+0080000000000100080012000000010000800000000001000c0013000000
+01000080000000000100080014000000010000800000000001000c001500
+000001000080000000000100080016000000010000800000000001000c00
+170000000100008000000000010008001800000001000080000000000100
+0c00190000000100008000000000010008001a0000000100008000000000
+01000c001b0000000100008000000000010008001c000000010000800000
+000001000c001d0000000100008000000000010008001e00000001000080
+0000000001000c001f000000010000800000000001000800000000000200
+008047de1f0300000000010000000200008047de1f030000000002000000
+0200008047de1f0300000000030000000200008047de1f0300000000
\ No newline at end of file
diff --git a/examples/nvidia_cmet_info.json b/examples/nvidia_cmet_info.json
new file mode 100644
index 0000000..4c3c892
--- /dev/null
+++ b/examples/nvidia_cmet_info.json
@@ -0,0 +1,434 @@
+{
+ "header": {
+ "revision": {
+ "major": 0,
+ "minor": 0
+ },
+ "sectionCount": 1,
+ "severity": {
+ "code": 3,
+ "name": "Informational"
+ },
+ "recordLength": 808,
+ "timestamp": "2025-03-21T23:50:19+00:00",
+ "timestampIsPrecise": false,
+ "creatorID": "a901e478-1173-11ef-96a8-5fa6bef5eea4",
+ "notificationType": {
+ "guid": "09a9d5ac-5204-4214-96e5-94992e752bcd",
+ "type": "PEI"
+ },
+ "recordID": 4,
+ "flags": {
+ "value": 0,
+ "name": "Unknown"
+ },
+ "persistenceInfo": 0
+ },
+ "sectionDescriptors": [
+ {
+ "sectionOffset": 200,
+ "sectionLength": 608,
+ "revision": {
+ "major": 0,
+ "minor": 0
+ },
+ "flags": {
+ "primary": false,
+ "containmentWarning": false,
+ "reset": false,
+ "errorThresholdExceeded": false,
+ "resourceNotAccessible": false,
+ "latentError": false,
+ "propagated": false,
+ "overflow": false
+ },
+ "sectionType": {
+ "data": "6d5244f2-2712-11ec-bea7-cb3fdb95c786",
+ "type": "NVIDIA"
+ },
+ "fruID": "cc4f334a-c563-11eb-8f88-9f7ac76c6f0c",
+ "severity": {
+ "code": 3,
+ "name": "Informational"
+ }
+ }
+ ],
+ "sections": [
+ {
+ "Nvidia": {
+ "signature": "CMET-INFO",
+ "severity": {
+ "code": 3,
+ "name": "Informational"
+ },
+ "errorType": 0,
+ "errorInstance": 0,
+ "socket": 0,
+ "registerCount": 36,
+ "instanceBase": 0,
+ "CMETInfo": [
+ {
+ "ChannelAddress": "0x8000000100000000",
+ "ErrorCount": 0,
+ "ChannelEnabled": false,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000001",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000002",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000003",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000004",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000005",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000006",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000007",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000008",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000009",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000000A",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000000B",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000000C",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000000D",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000000E",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000000F",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000010",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000011",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000012",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000013",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000014",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000015",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000016",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000017",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000018",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000100000019",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000001A",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000001B",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000001C",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000001D",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000001E",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x800000010000001F",
+ "ErrorCount": 0,
+ "ChannelEnabled": true,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000200000000",
+ "ErrorCount": 52420167,
+ "ChannelEnabled": false,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000200000001",
+ "ErrorCount": 52420167,
+ "ChannelEnabled": false,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000200000002",
+ "ErrorCount": 52420167,
+ "ChannelEnabled": false,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ },
+ {
+ "ChannelAddress": "0x8000000200000003",
+ "ErrorCount": 52420167,
+ "ChannelEnabled": false,
+ "ChannelIsSpare": false,
+ "DisabledReason": {
+ "raw": 0,
+ "value": "Alias Checker Failed"
+ }
+ }
+ ]
+ }
+ }
+ ]
+}