| # -*- Mode: Python -*- |
| # vim: filetype=python |
| |
| ## |
| # = CXL devices |
| ## |
| |
| ## |
| # @CxlUncorErrorType: |
| # |
| # Type of uncorrectable CXL error to inject. These errors are reported via |
| # an AER uncorrectable internal error with additional information logged at |
| # the CXL device. |
| # |
| # @cache-data-parity: Data error such as data parity or data ECC error CXL.cache |
| # @cache-address-parity: Address parity or other errors associated with the |
| # address field on CXL.cache |
| # @cache-be-parity: Byte enable parity or other byte enable errors on CXL.cache |
| # @cache-data-ecc: ECC error on CXL.cache |
| # @mem-data-parity: Data error such as data parity or data ECC error on CXL.mem |
| # @mem-address-parity: Address parity or other errors associated with the |
| # address field on CXL.mem |
| # @mem-be-parity: Byte enable parity or other byte enable errors on CXL.mem. |
| # @mem-data-ecc: Data ECC error on CXL.mem. |
| # @reinit-threshold: REINIT threshold hit. |
| # @rsvd-encoding: Received unrecognized encoding. |
| # @poison-received: Received poison from the peer. |
| # @receiver-overflow: Buffer overflows (first 3 bits of header log indicate which) |
| # @internal: Component specific error |
| # @cxl-ide-tx: Integrity and data encryption tx error. |
| # @cxl-ide-rx: Integrity and data encryption rx error. |
| # |
| # Since: 8.0 |
| ## |
| |
| { 'enum': 'CxlUncorErrorType', |
| 'data': ['cache-data-parity', |
| 'cache-address-parity', |
| 'cache-be-parity', |
| 'cache-data-ecc', |
| 'mem-data-parity', |
| 'mem-address-parity', |
| 'mem-be-parity', |
| 'mem-data-ecc', |
| 'reinit-threshold', |
| 'rsvd-encoding', |
| 'poison-received', |
| 'receiver-overflow', |
| 'internal', |
| 'cxl-ide-tx', |
| 'cxl-ide-rx' |
| ] |
| } |
| |
| ## |
| # @CXLUncorErrorRecord: |
| # |
| # Record of a single error including header log. |
| # |
| # @type: Type of error |
| # @header: 16 DWORD of header. |
| # |
| # Since: 8.0 |
| ## |
| { 'struct': 'CXLUncorErrorRecord', |
| 'data': { |
| 'type': 'CxlUncorErrorType', |
| 'header': [ 'uint32' ] |
| } |
| } |
| |
| ## |
| # @cxl-inject-uncorrectable-errors: |
| # |
| # Command to allow injection of multiple errors in one go. This allows testing |
| # of multiple header log handling in the OS. |
| # |
| # @path: CXL Type 3 device canonical QOM path |
| # @errors: Errors to inject |
| # |
| # Since: 8.0 |
| ## |
| { 'command': 'cxl-inject-uncorrectable-errors', |
| 'data': { 'path': 'str', |
| 'errors': [ 'CXLUncorErrorRecord' ] }} |
| |
| ## |
| # @CxlCorErrorType: |
| # |
| # Type of CXL correctable error to inject |
| # |
| # @cache-data-ecc: Data ECC error on CXL.cache |
| # @mem-data-ecc: Data ECC error on CXL.mem |
| # @crc-threshold: Component specific and applicable to 68 byte Flit mode only. |
| # @cache-poison-received: Received poison from a peer on CXL.cache. |
| # @mem-poison-received: Received poison from a peer on CXL.mem |
| # @physical: Received error indication from the physical layer. |
| # |
| # Since: 8.0 |
| ## |
| { 'enum': 'CxlCorErrorType', |
| 'data': ['cache-data-ecc', |
| 'mem-data-ecc', |
| 'crc-threshold', |
| 'retry-threshold', |
| 'cache-poison-received', |
| 'mem-poison-received', |
| 'physical'] |
| } |
| |
| ## |
| # @cxl-inject-correctable-error: |
| # |
| # Command to inject a single correctable error. Multiple error injection |
| # of this error type is not interesting as there is no associated header log. |
| # These errors are reported via AER as a correctable internal error, with |
| # additional detail available from the CXL device. |
| # |
| # @path: CXL Type 3 device canonical QOM path |
| # @type: Type of error. |
| # |
| # Since: 8.0 |
| ## |
| { 'command': 'cxl-inject-correctable-error', |
| 'data': { 'path': 'str', |
| 'type': 'CxlCorErrorType' |
| } |
| } |