Add schema for PCIe aerInfo
A few commits ago, we punted and didn't include a schema for aerinfo.
This commit reenables the json schema, and corrects the config for
the PCIe error fields.
There are certain objects that have zero properties. These are
commented out temporarily to ensure that we don't have empty objects
in the output, which would confuse users.
Change-Id: Id756cd90348cd77a1647c2781a6ce26e7d9a3485
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/examples/pcie.json b/examples/pcie.json
index bf0ca94..fb7d8cb 100644
--- a/examples/pcie.json
+++ b/examples/pcie.json
@@ -93,7 +93,6 @@
"err_cor_source_identification": 40465,
"err_fatal_nonfatal_source_identification": 56329
},
- "root_error_command": {},
"root_error_status": {
"advanced_error_interrupt_message_number": 18,
"err_cor_subclass": 0
@@ -245,7 +244,6 @@
"transactions_pending": false,
"unsupported_request_detected": true
},
- "device_status2": {},
"link_capabilities": {
"aspm_optionality_compliance": false,
"aspm_support": 2,
@@ -326,8 +324,6 @@
},
"next_capability_pointer": 180
},
- "root_capabilities": {},
- "root_control": {},
"root_status": {
"pme_pending": 1,
"pme_requester_id": 45292,
@@ -340,19 +336,16 @@
"raw": 2
}
},
- "slot_capabilities2": {},
"slot_control": {
"attention_indicator_control": 3,
"power_indicator_control": 0,
"rsvdp": 1
},
- "slot_control2": {},
"slot_status": {
"command_completed": 0,
"mrl_sensor_changed": 0,
"mrl_sensor_state": 1
- },
- "slot_status2": {}
+ }
},
"commandStatus": {
"commandRegister": 49788,
diff --git a/sections/cper-section-pcie.c b/sections/cper-section-pcie.c
index 03f4ddd..1471260 100644
--- a/sections/cper-section-pcie.c
+++ b/sections/cper-section-pcie.c
@@ -787,7 +787,7 @@
* Root Control Register
* Offset: 0x1C
*/
- fields_ir = json_object_new_object();
+ //fields_ir = json_object_new_object();
//add_bool(fields_ir, "system_error_on_correctable_error_enable",
// cap_decode->root_control
// .system_error_on_correctable_error_enable);
@@ -804,19 +804,19 @@
//add_bool(fields_ir, "no_nfm_subtree_below_this_root_port",
// cap_decode->root_control.no_nfm_subtree_below_this_root_port);
//add_int(fields_ir, "rsvdp", cap_decode->root_control.rsvdp);
- json_object_object_add(pcie_capability_ir, "root_control", fields_ir);
+ //json_object_object_add(pcie_capability_ir, "root_control", fields_ir);
/*
* Root Capabilities Register
* Offset: 0x1E
*/
- fields_ir = json_object_new_object();
+ //fields_ir = json_object_new_object();
//add_bool(fields_ir, "configuraton_rrs_software_visibility",
// cap_decode->root_capabilities
// .configuraton_rrs_software_visibility);
//add_int(fields_ir, "rsvdp", cap_decode->root_capabilities.rsvdp);
- json_object_object_add(pcie_capability_ir, "root_capabilities",
- fields_ir);
+ //json_object_object_add(pcie_capability_ir, "root_capabilities",
+ // fields_ir);
/*
* Root Status Register
@@ -941,9 +941,9 @@
* Device Status 2 Register
* Offset: 0x2A
*/
- fields_ir = json_object_new_object();
+ //fields_ir = json_object_new_object();
//add_int(fields_ir, "rsvdz", cap_decode->device_status2.rsvdz);
- json_object_object_add(pcie_capability_ir, "device_status2", fields_ir);
+ //json_object_object_add(pcie_capability_ir, "device_status2", fields_ir);
/*
* Link Capabilities 2 Register
@@ -1034,26 +1034,26 @@
* Slot Capabilities 2 Register
* Offset: 0x34
*/
- fields_ir = json_object_new_object();
+ //fields_ir = json_object_new_object();
//add_int(fields_ir, "rsvdp", cap_decode->slot_capabilities2.rsvdp);
- json_object_object_add(pcie_capability_ir, "slot_capabilities2",
- fields_ir);
+ //json_object_object_add(pcie_capability_ir, "slot_capabilities2",
+ // fields_ir);
/*
* Slot Control 2 Register
* Offset: 0x38
*/
- fields_ir = json_object_new_object();
+ //fields_ir = json_object_new_object();
//add_int(fields_ir, "rsvdp", cap_decode->slot_control2.rsvdp);
- json_object_object_add(pcie_capability_ir, "slot_control2", fields_ir);
+ //json_object_object_add(pcie_capability_ir, "slot_control2", fields_ir);
/*
* Slot Status 2 Register
* Offset: 0x3A
*/
- fields_ir = json_object_new_object();
+ //fields_ir = json_object_new_object();
//add_int(fields_ir, "rsvdp", cap_decode->slot_status2.rsvdp);
- json_object_object_add(pcie_capability_ir, "slot_status2", fields_ir);
+ //json_object_object_add(pcie_capability_ir, "slot_status2", fields_ir);
return pcie_capability_ir;
}
@@ -1442,7 +1442,7 @@
* Root Error Command Register
* Offset: 0x2C
*/
- fields_ir = json_object_new_object();
+ //fields_ir = json_object_new_object();
//add_bool(fields_ir, "correctable_error_reporting_enable",
// aer_decode->root_error_command
// .correctable_error_reporting_enable);
@@ -1452,8 +1452,8 @@
//add_bool(fields_ir, "fatal_error_reporting_enable",
// aer_decode->root_error_command.fatal_error_reporting_enable);
//add_int(fields_ir, "rsvdp", aer_decode->root_error_command.rsvdp);
- json_object_object_add(aer_capability_ir, "root_error_command",
- fields_ir);
+ ///json_object_object_add(aer_capability_ir, "root_error_command",
+ // fields_ir);
/*
* Root Error Status Register
diff --git a/specification/json/sections/cper-pcie-aerInfo.json b/specification/json/sections/cper-pcie-aerInfo.json
index 957e6a9..c3af70f 100644
--- a/specification/json/sections/cper-pcie-aerInfo.json
+++ b/specification/json/sections/cper-pcie-aerInfo.json
@@ -4,150 +4,340 @@
"type": "object",
"description": "PCIe Advanced Error Reporting Extended Capability Structure",
"additionalProperties": false,
- "required": [
- "data",
- "capability_header",
- "uncorrectable_error_status",
- "uncorrectable_error_mask",
- "uncorrectable_error_severity",
- "correctable_error_status",
- "correctable_error_mask",
- "advanced_error_capabilities_and_control",
- "root_error_command",
- "root_error_status",
- "error_source_id"
- ],
"properties": {
- "data": {
- "type": "string"
+ "advanced_error_capabilities_and_control": {
+ "type": "object",
+ "properties": {
+ "first_error_pointer": {
+ "type": "integer"
+ },
+ "header_log_size": {
+ "type": "integer"
+ },
+ "logged_tlp_size": {
+ "type": "integer"
+ }
+ },
+ "required": []
},
"capability_header": {
"type": "object",
- "description": "AER Capability Header (Offset: 0x0)",
- "required": [
- "capability_id",
- "capability_version",
- "next_capability_offset"
- ],
"properties": {
"capability_id": {
- "type": "integer",
- "minimum": 0,
- "maximum": 65535
+ "type": "integer"
},
"capability_version": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
+ "type": "integer"
},
"next_capability_offset": {
- "type": "integer",
- "minimum": 0,
- "maximum": 4095
+ "type": "integer"
}
- }
- },
- "uncorrectable_error_status": {
- "type": "object",
- "description": "Uncorrectable Error Status Register (Offset: 0x4)",
- "required": [],
- "properties": {}
- },
- "uncorrectable_error_mask": {
- "type": "object",
- "description": "Uncorrectable Error Mask Register (Offset: 0x8)",
- "required": [],
- "properties": {}
- },
- "uncorrectable_error_severity": {
- "type": "object",
- "description": "Uncorrectable Error Severity Register (Offset: 0xC)",
- "required": [],
- "properties": {}
- },
- "correctable_error_status": {
- "type": "object",
- "description": "Correctable Error Status Register (Offset: 0x10)",
- "required": [],
- "properties": {}
+ },
+ "required": []
},
"correctable_error_mask": {
"type": "object",
- "description": "Correctable Error Mask Register (Offset: 0x14)",
- "required": [],
- "properties": {}
- },
- "advanced_error_capabilities_and_control": {
- "type": "object",
- "description": "Advanced Error Capabilities and Control Register (Offset: 0x18)",
- "required": [
- "first_error_pointer",
- "header_log_size",
- "logged_tlp_size"
- ],
"properties": {
- "first_error_pointer": {
- "type": "integer",
- "minimum": 0,
- "maximum": 31
+ "advisory_non_fatal_error_mask": {
+ "type": "integer"
},
- "header_log_size": {
- "type": "integer",
- "minimum": 0,
- "maximum": 31
+ "bad_dllp_mask": {
+ "type": "integer"
},
- "logged_tlp_size": {
- "type": "integer",
- "minimum": 0,
- "maximum": 31
+ "bad_tlp_mask": {
+ "type": "integer"
+ },
+ "corrected_internal_error_mask": {
+ "type": "integer"
+ },
+ "header_log_overflow_mask": {
+ "type": "integer"
+ },
+ "receiver_error_mask": {
+ "type": "integer"
+ },
+ "replay_num_rollover_mask": {
+ "type": "integer"
+ },
+ "replay_timer_timeout_mask": {
+ "type": "integer"
}
- }
+ },
+ "required": []
},
- "root_error_command": {
+ "correctable_error_status": {
"type": "object",
- "description": "Root Error Command Register (Offset: 0x2C)",
- "required": [],
- "properties": {}
- },
- "root_error_status": {
- "type": "object",
- "description": "Root Error Status Register (Offset: 0x30)",
- "required": [
- "err_cor_subclass",
- "advanced_error_interrupt_message_number"
- ],
"properties": {
- "err_cor_subclass": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
+ "advisory_non_fatal_error_status": {
+ "type": "boolean"
},
- "advanced_error_interrupt_message_number": {
- "type": "integer",
- "minimum": 0,
- "maximum": 31
+ "bad_dllp_status": {
+ "type": "boolean"
+ },
+ "bad_tlp_status": {
+ "type": "boolean"
+ },
+ "corrected_internal_error_status": {
+ "type": "boolean"
+ },
+ "header_log_overflow_status": {
+ "type": "boolean"
+ },
+ "receiver_error_status": {
+ "type": "boolean"
+ },
+ "replay_num_rollover_status": {
+ "type": "boolean"
+ },
+ "replay_timer_timeout_status": {
+ "type": "boolean"
}
- }
+ },
+ "required": []
+ },
+ "data": {
+ "type": "string"
},
"error_source_id": {
"type": "object",
- "description": "Error Source Identification Register (Offset: 0x34)",
- "required": [
- "err_cor_source_identification",
- "err_fatal_nonfatal_source_identification"
- ],
"properties": {
"err_cor_source_identification": {
- "type": "integer",
- "minimum": 0,
- "maximum": 65535
+ "type": "integer"
},
"err_fatal_nonfatal_source_identification": {
- "type": "integer",
- "minimum": 0,
- "maximum": 65535
+ "type": "integer"
}
- }
+ },
+ "required": []
+ },
+ "root_error_status": {
+ "type": "object",
+ "properties": {
+ "advanced_error_interrupt_message_number": {
+ "type": "integer"
+ },
+ "err_cor_subclass": {
+ "type": "integer"
+ }
+ },
+ "required": []
+ },
+ "uncorrectable_error_mask": {
+ "type": "object",
+ "properties": {
+ "acs_violation_mask": {
+ "type": "integer"
+ },
+ "atomicop_egress_blocked_mask": {
+ "type": "integer"
+ },
+ "completer_abort_mask": {
+ "type": "integer"
+ },
+ "completion_timeout_mask": {
+ "type": "integer"
+ },
+ "data_link_protocol_error_mask": {
+ "type": "integer"
+ },
+ "dmwr_request_egress_blocked_mask": {
+ "type": "integer"
+ },
+ "ecrc_error_mask": {
+ "type": "integer"
+ },
+ "flow_control_protocol_error_mask": {
+ "type": "integer"
+ },
+ "ide_check_failed_mask": {
+ "type": "integer"
+ },
+ "malformed_tlp_mask": {
+ "type": "integer"
+ },
+ "mc_blocked_tlp_mask": {
+ "type": "integer"
+ },
+ "misrouted_ide_tlp_mask": {
+ "type": "integer"
+ },
+ "pcrc_check_failed_mask": {
+ "type": "integer"
+ },
+ "poisoned_tlp_egress_blocked_mask": {
+ "type": "integer"
+ },
+ "poisoned_tlp_received_mask": {
+ "type": "integer"
+ },
+ "receiver_overflow_mask": {
+ "type": "integer"
+ },
+ "surprise_down_error_mask": {
+ "type": "integer"
+ },
+ "tlp_prefix_blocked_error_mask": {
+ "type": "integer"
+ },
+ "tlp_translation_egress_blocked_mask": {
+ "type": "integer"
+ },
+ "uncorrectable_internal_error_mask": {
+ "type": "integer"
+ },
+ "unexpected_completion_mask": {
+ "type": "integer"
+ },
+ "unsupported_request_error_mask": {
+ "type": "integer"
+ }
+ },
+ "required": []
+ },
+ "uncorrectable_error_severity": {
+ "type": "object",
+ "properties": {
+ "acs_violation_severity": {
+ "type": "string"
+ },
+ "atomicop_egress_blocked_severity": {
+ "type": "string"
+ },
+ "completer_abort_severity": {
+ "type": "string"
+ },
+ "completion_timeout_severity": {
+ "type": "string"
+ },
+ "data_link_protocol_error_severity": {
+ "type": "string"
+ },
+ "dmwr_request_egress_blocked_severity": {
+ "type": "string"
+ },
+ "ecrc_error_severity": {
+ "type": "string"
+ },
+ "flow_control_protocol_error_severity": {
+ "type": "string"
+ },
+ "ide_check_failed_severity": {
+ "type": "string"
+ },
+ "malformed_tlp_severity": {
+ "type": "string"
+ },
+ "mc_blocked_tlp_severity": {
+ "type": "string"
+ },
+ "misrouted_ide_tlp_severity": {
+ "type": "string"
+ },
+ "pcrc_check_failed_severity": {
+ "type": "string"
+ },
+ "poisoned_tlp_egress_blocked_severity": {
+ "type": "string"
+ },
+ "poisoned_tlp_received_severity": {
+ "type": "string"
+ },
+ "receiver_overflow_severity": {
+ "type": "string"
+ },
+ "surprise_down_error_severity": {
+ "type": "string"
+ },
+ "tlp_prefix_blocked_error_severity": {
+ "type": "string"
+ },
+ "tlp_translation_egress_blocked_severity": {
+ "type": "string"
+ },
+ "uncorrectable_internal_error_severity": {
+ "type": "string"
+ },
+ "unexpected_completion_severity": {
+ "type": "string"
+ },
+ "unsupported_request_error_severity": {
+ "type": "string"
+ }
+ },
+ "required": []
+ },
+ "uncorrectable_error_status": {
+ "type": "object",
+ "properties": {
+ "acs_violation_status": {
+ "type": "boolean"
+ },
+ "atomicop_egress_blocked_status": {
+ "type": "boolean"
+ },
+ "completer_abort_status": {
+ "type": "boolean"
+ },
+ "completion_timeout_status": {
+ "type": "boolean"
+ },
+ "data_link_protocol_error_status": {
+ "type": "boolean"
+ },
+ "dmwr_request_egress_blocked_status": {
+ "type": "boolean"
+ },
+ "ecrc_error_status": {
+ "type": "boolean"
+ },
+ "flow_control_protocol_error_status": {
+ "type": "boolean"
+ },
+ "ide_check_failed_status": {
+ "type": "boolean"
+ },
+ "malformed_tlp_status": {
+ "type": "boolean"
+ },
+ "mc_blocked_tlp_status": {
+ "type": "boolean"
+ },
+ "misrouted_ide_tlp_status": {
+ "type": "boolean"
+ },
+ "pcrc_check_failed_status": {
+ "type": "boolean"
+ },
+ "poisoned_tlp_egress_blocked_status": {
+ "type": "boolean"
+ },
+ "poisoned_tlp_received": {
+ "type": "boolean"
+ },
+ "receiver_overflow_status": {
+ "type": "boolean"
+ },
+ "surprise_down_error_status": {
+ "type": "boolean"
+ },
+ "tlp_prefix_blocked_error_status": {
+ "type": "boolean"
+ },
+ "tlp_translation_egress_blocked_status": {
+ "type": "boolean"
+ },
+ "uncorrectable_internal_error_status": {
+ "type": "boolean"
+ },
+ "unexpected_completion_status": {
+ "type": "boolean"
+ },
+ "unsupported_request_error_status": {
+ "type": "boolean"
+ }
+ },
+ "required": []
}
- }
+ },
+ "required": []
}
diff --git a/specification/json/sections/cper-pcie-capabilityStructure.json b/specification/json/sections/cper-pcie-capabilityStructure.json
index a8a1c3c..cf9eacd 100644
--- a/specification/json/sections/cper-pcie-capabilityStructure.json
+++ b/specification/json/sections/cper-pcie-capabilityStructure.json
@@ -4,648 +4,549 @@
"type": "object",
"description": "PCIe 1.0 or PCIe 2.0 Capability structure",
"additionalProperties": false,
- "required": [
- "data",
- "pcie_capability_header",
- "pcie_capabilities",
- "device_capabilities",
- "device_control",
- "device_status",
- "link_capabilities",
- "link_control",
- "link_status",
- "slot_capabilities",
- "slot_control",
- "slot_status",
- "root_control",
- "root_capabilities",
- "root_status"
- ],
"properties": {
"data": {
"type": "string"
},
- "pcie_capability_header": {
- "type": "object",
- "description": "The templat of each register is: ()",
- "required": ["capability_id", "next_capability_pointer"],
- "properties": {
- "capability_id": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 255
- }
- }
- },
- "next_capability_pointer": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 255
- }
- }
- }
- }
- },
- "pcie_capabilities": {
- "type": "object",
- "description": "PCI Express Capabilities Register (Offset: 0x2)",
- "required": [
- "capability_version",
- "device_port_type",
- "interrupt_message_number"
- ],
- "properties": {
- "capability_version": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
- }
- }
- },
- "device_port_type": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
- }
- }
- },
- "interrupt_message_number": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 31
- }
- }
- }
- }
- },
"device_capabilities": {
"type": "object",
- "description": "/* (PCI Express Capability Structure)",
- "required": [
- "max_payload_size_supported",
- "phantom_functions_supported",
- "endpoint_l0s_acceptable_latency",
- "endpoint_l1_acceptable_latency",
- "captured_slot_power_limit_value",
- "captured_slot_power_limit_scale"
- ],
"properties": {
- "max_payload_size_supported": {
- "type": "integer",
- "minimum": 0,
- "maximum": 7
+ "captured_slot_power_limit_scale": {
+ "type": "integer"
},
- "phantom_functions_supported": {
- "type": "boolean"
+ "captured_slot_power_limit_value": {
+ "type": "integer"
},
"endpoint_l0s_acceptable_latency": {
"type": "object",
- "required": ["raw"],
"properties": {
"raw": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
+ "type": "integer"
}
- }
+ },
+ "required": []
},
"endpoint_l1_acceptable_latency": {
"type": "object",
- "required": ["raw"],
"properties": {
"raw": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
+ "type": "integer"
}
- }
+ },
+ "required": []
},
- "captured_slot_power_limit_value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 255
+ "err_cor_subclass_capable": {
+ "type": "boolean"
},
- "captured_slot_power_limit_scale": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
+ "extended_tag_field_supported": {
+ "type": "string"
+ },
+ "function_level_reset_capability_supported": {
+ "type": "string"
+ },
+ "max_payload_size_supported": {
+ "type": "integer"
+ },
+ "mixed_mps_supported": {
+ "type": "string"
+ },
+ "phantom_functions_supported": {
+ "type": "string"
+ },
+ "role_based_error_reporting": {
+ "type": "boolean"
+ },
+ "rx_mps_fixed": {
+ "type": "integer"
+ },
+ "tee_io_supported": {
+ "type": "string"
}
- }
- },
- "device_control": {
- "type": "object",
- "description": "Device Control Register (Offset: 0x8)",
- "required": ["max_payload_size", "max_read_request_size"],
- "properties": {
- "max_payload_size": {
- "type": "integer",
- "minimum": 0,
- "maximum": 7
- },
- "max_read_request_size": {
- "type": "integer",
- "minimum": 0,
- "maximum": 7
- }
- }
- },
- "device_status": {
- "type": "object",
- "description": "Device Status Register (Offset: 0xA)",
- "required": ["emergency_power_reduction"],
- "properties": {
- "emergency_power_reduction": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
- }
- }
- },
- "link_capabilities": {
- "type": "object",
- "description": "Link Capabilities Register (Offset: 0xC)",
- "required": [
- "max_link_speed",
- "maximum_link_width",
- "aspm_support",
- "l0s_exit_latency",
- "l1_exit_latency",
- "port_number"
- ],
- "properties": {
- "max_link_speed": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
- }
- }
- },
- "maximum_link_width": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 63
- }
- }
- },
- "aspm_support": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
- },
- "l0s_exit_latency": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 7
- }
- }
- },
- "l1_exit_latency": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 7
- }
- }
- },
- "port_number": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 255
- }
- }
- }
- }
- },
- "link_control": {
- "type": "object",
- "description": "Link Control Register (Offset: 0x10)",
- "required": ["aspm_control"],
- "properties": {
- "aspm_control": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
- }
- }
- },
- "link_status": {
- "type": "object",
- "description": "Link Status Register (Offset: 0x12)",
- "required": ["current_link_speed", "negotiated_link_width"],
- "properties": {
- "current_link_speed": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
- }
- }
- },
- "negotiated_link_width": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 63
- }
- }
- }
- }
- },
- "slot_capabilities": {
- "type": "object",
- "description": "Slot Capabilities Register (Offset: 0x14)",
- "required": [
- "slot_power_limit_value",
- "slot_power_limit_scale",
- "physical_slot_number"
- ],
- "properties": {
- "slot_power_limit_value": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 255
- }
- }
- },
- "slot_power_limit_scale": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
- },
- "physical_slot_number": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 8191
- }
- }
- }
- }
- },
- "slot_control": {
- "type": "object",
- "description": "Slot Control Register (Offset: 0x18)",
- "required": [
- "attention_indicator_control",
- "power_indicator_control"
- ],
- "properties": {
- "attention_indicator_control": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
- },
- "power_indicator_control": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
- }
- }
- },
- "slot_status": {
- "type": "object",
- "description": "Slot Status Register (Offset: 0x1A)",
- "required": [],
- "properties": {}
- },
- "root_control": {
- "type": "object",
- "description": "Root Control Register (Offset: 0x1C)",
- "required": [],
- "properties": {}
- },
- "root_capabilities": {
- "type": "object",
- "description": "Root Capabilities Register (Offset: 0x1E)",
- "required": [],
- "properties": {}
- },
- "root_status": {
- "type": "object",
- "description": "Root Status Register (Offset: 0x20)",
- "required": ["pme_requester_id"],
- "properties": {
- "pme_requester_id": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 65535
- }
- }
- }
- }
+ },
+ "required": []
},
"device_capabilities2": {
"type": "object",
- "description": "Device Capabilities 2 Register (Offset: 0x24)",
- "required": [
- "completion_timeout_ranges_supported",
- "tph_completer_supported",
- "obff_supported",
- "max_end_end_tlp_prefixes",
- "emergency_power_reduction_supported",
- "dmwr_lengths_supported"
- ],
"properties": {
+ "_128_bit_cas_completer_supported": {
+ "type": "string"
+ },
+ "_32_bit_atomicop_completer_supported": {
+ "type": "string"
+ },
+ "_64_bit_atomicop_completer_supported": {
+ "type": "string"
+ },
+ "ari_forwarding_supported": {
+ "type": "string"
+ },
+ "atomic_op_routing_supported": {
+ "type": "string"
+ },
+ "completion_timeout_disable_supported": {
+ "type": "string"
+ },
"completion_timeout_ranges_supported": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
- },
- "tph_completer_supported": {
- "type": "boolean"
- },
- "obff_supported": {
- "type": "boolean"
- },
- "max_end_end_tlp_prefixes": {
- "properties": {
- "raw": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
- },
- "emergency_power_reduction_supported": {
- "type": "boolean"
+ "type": "integer"
},
"dmwr_lengths_supported": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
+ "type": "integer"
+ },
+ "emergency_power_reduction_supported": {
+ "type": "string"
+ },
+ "ltr_mechanism_supported": {
+ "type": "string"
+ },
+ "max_end_end_tlp_prefixes": {
+ "type": "object",
+ "properties": {
+ "raw": {
+ "type": "integer"
+ }
+ },
+ "required": []
+ },
+ "no_ro_enabled_pr_pr_passing": {
+ "type": "string"
+ },
+ "obff_supported": {
+ "type": "string"
+ },
+ "tph_completer_supported": {
+ "type": "string"
}
- }
+ },
+ "required": []
+ },
+ "device_control": {
+ "type": "object",
+ "properties": {
+ "aux_power_pm_enable": {
+ "type": "string"
+ },
+ "correctable_error_reporting_enable": {
+ "type": "string"
+ },
+ "enable_no_snoop": {
+ "type": "integer"
+ },
+ "extended_tag_field_enable": {
+ "type": "string"
+ },
+ "fatal_error_reporting_enable": {
+ "type": "string"
+ },
+ "function_level_reset": {
+ "type": "boolean"
+ },
+ "max_payload_size": {
+ "type": "integer"
+ },
+ "max_read_request_size": {
+ "type": "integer"
+ },
+ "non_fatal_error_reporting_enable": {
+ "type": "string"
+ },
+ "phantom_functions_enable": {
+ "type": "string"
+ },
+ "relaxed_ordering_enable": {
+ "type": "string"
+ },
+ "unsupported_request_reporting_enabled": {
+ "type": "string"
+ }
+ },
+ "required": []
},
"device_control2": {
"type": "object",
- "description": "Device Control 2 Register (Offset: 0x28)",
- "required": ["completion_timeout_value", "obff_enable"],
"properties": {
+ "10_bit_tag_requester_enable": {
+ "type": "boolean"
+ },
+ "ari_forwarding_enable": {
+ "type": "boolean"
+ },
+ "atomicop_egress_blocking": {
+ "type": "boolean"
+ },
+ "atomicop_requester_enable": {
+ "type": "boolean"
+ },
"completion_timeout_value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
+ "type": "integer"
+ },
+ "emergency_power_reduction_request": {
+ "type": "boolean"
+ },
+ "ido_completion_enable": {
+ "type": "boolean"
+ },
+ "ido_request_enable": {
+ "type": "boolean"
+ },
+ "ltr_mechanism_enable": {
+ "type": "boolean"
},
"obff_enable": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
+ "type": "integer"
}
- }
+ },
+ "required": []
},
- "device_status2": {
+ "device_status": {
"type": "object",
- "description": "Device Status 2 Register (Offset: 0x2A)",
- "required": [],
- "properties": {}
+ "properties": {
+ "aux_power_detected": {
+ "type": "boolean"
+ },
+ "correctable_error_detected": {
+ "type": "boolean"
+ },
+ "emergency_power_reduction": {
+ "type": "integer"
+ },
+ "fatal_error_detected": {
+ "type": "boolean"
+ },
+ "non_fatal_error_detected": {
+ "type": "boolean"
+ },
+ "transactions_pending": {
+ "type": "boolean"
+ },
+ "unsupported_request_detected": {
+ "type": "boolean"
+ }
+ },
+ "required": []
+ },
+ "link_capabilities": {
+ "type": "object",
+ "properties": {
+ "aspm_optionality_compliance": {
+ "type": "boolean"
+ },
+ "aspm_support": {
+ "type": "integer"
+ },
+ "clock_power_management": {
+ "type": "boolean"
+ },
+ "data_link_layer_link_active_reporting_capable": {
+ "type": "boolean"
+ },
+ "l0s_exit_latency": {
+ "type": "integer"
+ },
+ "l1_exit_latency": {
+ "type": "integer"
+ },
+ "link_bandwidth_notification_capability": {
+ "type": "boolean"
+ },
+ "max_link_speed": {
+ "type": "integer"
+ },
+ "maximum_link_width": {
+ "type": "integer"
+ },
+ "port_number": {
+ "type": "integer"
+ },
+ "surprise_down_error_reporting_capable": {
+ "type": "boolean"
+ }
+ },
+ "required": []
},
"link_capabilities2": {
"type": "object",
- "description": "Link Capabilities 2 Register (Offset: 0x2C)",
- "required": [
- "supported_link_speeds",
- "lower_skp_os_generation_supported",
- "lower_skp_os_reception_supported",
- "reserved"
- ],
"properties": {
- "supported_link_speeds": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 127
- }
- }
+ "crosslink_supported": {
+ "type": "string"
+ },
+ "drs_supported": {
+ "type": "string"
},
"lower_skp_os_generation_supported": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 127
- }
- }
+ "type": "integer"
},
"lower_skp_os_reception_supported": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 127
- }
- }
+ "type": "integer"
},
- "reserved": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 63
- }
- }
+ "retimer_presence_detect_supported": {
+ "type": "string"
+ },
+ "supported_link_speeds": {
+ "type": "integer"
+ },
+ "two_retimers_presence_detect_supported": {
+ "type": "string"
}
- }
+ },
+ "required": []
+ },
+ "link_control": {
+ "type": "object",
+ "properties": {
+ "aspm_control": {
+ "type": "integer"
+ },
+ "extended_synch": {
+ "type": "integer"
+ },
+ "flit_mode_disable": {
+ "type": "integer"
+ },
+ "link_disable": {
+ "type": "integer"
+ },
+ "ptm_prop_delay_adaptation_interpretation": {
+ "type": "boolean"
+ },
+ "retrain_link": {
+ "type": "integer"
+ },
+ "sris_clocking": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "aspm_control",
+ "extended_synch",
+ "flit_mode_disable",
+ "link_disable",
+ "ptm_prop_delay_adaptation_interpretation",
+ "retrain_link",
+ "sris_clocking"
+ ]
},
"link_control2": {
"type": "object",
- "description": "Link Control 2 Register (Offset: 0x30)",
- "required": [
- "target_link_speed",
- "transmit_margin",
- "compliance_preset_de_emphasis"
- ],
"properties": {
+ "compliance_preset_de_emphasis": {
+ "type": "integer"
+ },
+ "compliance_sos": {
+ "type": "boolean"
+ },
+ "enter_compliance": {
+ "type": "string"
+ },
+ "enter_modified_compliance": {
+ "type": "boolean"
+ },
+ "hardware_autonomous_speed_disable": {
+ "type": "object",
+ "properties": {
+ "raw": {
+ "type": "integer"
+ }
+ },
+ "required": ["raw"]
+ },
+ "selectable_de_emphasis": {
+ "type": "boolean"
+ },
"target_link_speed": {
"type": "object",
- "required": ["value"],
"properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
+ "raw": {
+ "type": "integer"
}
- }
+ },
+ "required": ["raw"]
},
"transmit_margin": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 7
- }
- }
- },
- "compliance_preset_de_emphasis": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15
- }
- }
+ "type": "integer"
}
- }
+ },
+ "required": [
+ "compliance_preset_de_emphasis",
+ "compliance_sos",
+ "enter_compliance",
+ "enter_modified_compliance",
+ "hardware_autonomous_speed_disable",
+ "selectable_de_emphasis",
+ "target_link_speed",
+ "transmit_margin"
+ ]
+ },
+ "link_status": {
+ "type": "object",
+ "properties": {
+ "current_link_speed": {
+ "type": "integer"
+ },
+ "link_training": {
+ "type": "integer"
+ },
+ "negotiated_link_width": {
+ "type": "integer"
+ }
+ },
+ "required": []
},
"link_status2": {
"type": "object",
- "description": "Link Status 2 Register (Offset: 0x32)",
- "required": [
- "crosslink_resolution",
- "downstream_component_presence"
- ],
"properties": {
"crosslink_resolution": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 3
- }
- }
+ "type": "integer"
+ },
+ "current_de_emphasis_level": {
+ "type": "integer"
},
"downstream_component_presence": {
- "type": "object",
- "required": ["value"],
- "properties": {
- "value": {
- "type": "integer",
- "minimum": 0,
- "maximum": 7
- }
- }
+ "type": "integer"
+ },
+ "drs_message_received": {
+ "type": "boolean"
+ },
+ "equalization_8gts_complete": {
+ "type": "boolean"
+ },
+ "equalization_8gts_phase1_successful": {
+ "type": "boolean"
+ },
+ "equalization_8gts_phase2_successful": {
+ "type": "boolean"
+ },
+ "equalization_8gts_phase3_successful": {
+ "type": "boolean"
+ },
+ "flit_mode_status": {
+ "type": "integer"
+ },
+ "link_equalization_request_8gts": {
+ "type": "boolean"
+ },
+ "retimer_presence_detected": {
+ "type": "boolean"
+ },
+ "two_retimers_presence_detected": {
+ "type": "boolean"
}
- }
+ },
+ "required": []
},
- "slot_capabilities2": {
+ "pcie_capabilities": {
"type": "object",
- "description": "Slot Capabilities 2 Register (Offset: 0x34)",
- "required": [],
- "properties": {}
+ "properties": {
+ "capability_version": {
+ "type": "integer"
+ },
+ "device_port_type": {
+ "type": "object",
+ "properties": {
+ "raw": {
+ "type": "integer"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "required": []
+ },
+ "flit_mode_supported": {
+ "type": "string"
+ },
+ "interrupt_message_number": {
+ "type": "integer"
+ },
+ "slot_implemented": {
+ "type": "boolean"
+ }
+ },
+ "required": []
},
- "slot_control2": {
+ "pcie_capability_header": {
"type": "object",
- "description": "Slot Control 2 Register (Offset: 0x38)",
- "required": [],
- "properties": {}
+ "properties": {
+ "capability_id": {
+ "type": "object",
+ "properties": {
+ "raw": {
+ "type": "integer"
+ }
+ },
+ "required": []
+ },
+ "next_capability_pointer": {
+ "type": "integer"
+ }
+ },
+ "required": []
},
- "slot_status2": {
+ "root_status": {
"type": "object",
- "description": "Slot Status 2 Register (Offset: 0x3A)",
- "required": [],
- "properties": {}
+ "properties": {
+ "pme_pending": {
+ "type": "integer"
+ },
+ "pme_requester_id": {
+ "type": "integer"
+ },
+ "pme_status": {
+ "type": "integer"
+ }
+ },
+ "required": []
+ },
+ "slot_capabilities": {
+ "type": "object",
+ "properties": {
+ "physical_slot_number": {
+ "type": "integer"
+ },
+ "slot_power_limit_scale": {
+ "type": "integer"
+ },
+ "slot_power_limit_value": {
+ "type": "object",
+ "properties": {
+ "raw": {
+ "type": "integer"
+ }
+ },
+ "required": []
+ }
+ },
+ "required": []
+ },
+ "slot_control": {
+ "type": "object",
+ "properties": {
+ "attention_indicator_control": {
+ "type": "integer"
+ },
+ "power_indicator_control": {
+ "type": "integer"
+ },
+ "rsvdp": {
+ "type": "integer"
+ }
+ },
+ "required": []
+ },
+ "slot_status": {
+ "type": "object",
+ "properties": {
+ "command_completed": {
+ "type": "integer"
+ },
+ "mrl_sensor_changed": {
+ "type": "integer"
+ },
+ "mrl_sensor_state": {
+ "type": "integer"
+ }
+ },
+ "required": []
}
- }
+ },
+ "required": []
}
diff --git a/specification/json/sections/cper-pcie.json b/specification/json/sections/cper-pcie.json
index d6e6811..1dc2832 100644
--- a/specification/json/sections/cper-pcie.json
+++ b/specification/json/sections/cper-pcie.json
@@ -107,12 +107,10 @@
}
},
"capabilityStructure": {
- "type": "object",
- "description": "PCIe Capabilities structure"
+ "$ref": "./sections/cper-pcie-capabilityStructure.json"
},
"aerInfo": {
- "type": "object",
- "description": "PCIe Advanced Error Reporting Information"
+ "$ref": "./sections/cper-pcie-aerInfo.json"
}
}
}