Add remaining types bar CXL component to spec.
diff --git a/sections/cper-section-cxl-protocol.c b/sections/cper-section-cxl-protocol.c
index b902cc7..d7fbf0a 100644
--- a/sections/cper-section-cxl-protocol.c
+++ b/sections/cper-section-cxl-protocol.c
@@ -29,10 +29,10 @@
json_object_object_add(section_ir, "agentType", agent_type);
//CXL agent address, depending on the agent type.
+ json_object* agent_address = json_object_new_object();
if (cxl_protocol_error->CxlAgentType == CXL_PROTOCOL_ERROR_DEVICE_AGENT)
{
//Address is a CXL1.1 device agent.
- json_object* agent_address = json_object_new_object();
json_object_object_add(agent_address, "functionNumber",
json_object_new_uint64(cxl_protocol_error->CxlAgentAddress.DeviceAddress.FunctionNumber));
json_object_object_add(agent_address, "deviceNumber",
@@ -41,15 +41,14 @@
json_object_new_uint64(cxl_protocol_error->CxlAgentAddress.DeviceAddress.BusNumber));
json_object_object_add(agent_address, "segmentNumber",
json_object_new_uint64(cxl_protocol_error->CxlAgentAddress.DeviceAddress.SegmentNumber));
-
- json_object_object_add(section_ir, "cxlAgentAddress", agent_address);
}
else if (cxl_protocol_error->CxlAgentType == CXL_PROTOCOL_ERROR_HOST_DOWNSTREAM_PORT_AGENT)
{
//Address is a CXL port RCRB base address.
- json_object_object_add(section_ir, "cxlAgentAddress",
+ json_object_object_add(agent_address, "value",
json_object_new_uint64(cxl_protocol_error->CxlAgentAddress.PortRcrbBaseAddress));
}
+ json_object_object_add(section_ir, "cxlAgentAddress", agent_address);
//Device ID.
json_object* device_id = json_object_new_object();
@@ -86,16 +85,18 @@
//CXL DVSEC
//For CXL 1.1 devices, this is the "CXL DVSEC For Flex Bus Device" structure as in CXL 1.1 spec.
+ //For CXL 1.1 host downstream ports, this is the "CXL DVSEC For Flex Bus Port" structure as in CXL 1.1 spec.
unsigned char* cur_pos = (unsigned char*)(cxl_protocol_error + 1);
char* encoded = b64_encode(cur_pos, cxl_protocol_error->CxlDvsecLength);
- json_object_object_add(section_ir, "capabilityStructure", json_object_new_uint64(cxl_protocol_error->DeviceSerial));
+ json_object_object_add(section_ir, "cxlDVSEC", json_object_new_string(encoded));
free(encoded);
cur_pos += cxl_protocol_error->CxlDvsecLength;
- //For CXL 1.1 host downstream ports, this is the "CXL DVSEC For Flex Bus Port" structure as in CXL 1.1 spec.
-
//CXL Error Log
- //This as the "CXL RAS Capability Structure" as in CXL 1.1 spec.
+ //This is the "CXL RAS Capability Structure" as in CXL 1.1 spec.
+ encoded = b64_encode(cur_pos, cxl_protocol_error->CxlErrorLogLength);
+ json_object_object_add(section_ir, "cxlErrorLog", json_object_new_string(encoded));
+ free(encoded);
return section_ir;
}
\ No newline at end of file