11 # CXL has a number of separate event logs for different types of
12 # events. Each such event log is handled and signaled independently.
14 # @informational: Information Event Log
16 # @warning: Warning Event Log
18 # @failure: Failure Event Log
20 # @fatal: Fatal Event Log
24 { 'enum': 'CxlEventLog',
25 'data': ['informational',
32 # @cxl-inject-general-media-event:
34 # Inject an event record for a General Media Event (CXL r3.0
35 # 8.2.9.2.1.1). This event type is reported via one of the event logs
36 # specified via the log parameter.
38 # @path: CXL type 3 device canonical QOM path
40 # @log: event log to add the event to
42 # @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event
43 # Record Format, Event Record Flags for subfield definitions.
45 # @dpa: Device Physical Address (relative to @path device). Note
46 # lower bits include some flags. See CXL r3.0 Table 8-43 General
47 # Media Event Record, Physical Address.
49 # @descriptor: Memory Event Descriptor with additional memory event
50 # information. See CXL r3.0 Table 8-43 General Media Event
51 # Record, Memory Event Descriptor for bit definitions.
53 # @type: Type of memory event that occurred. See CXL r3.0 Table 8-43
54 # General Media Event Record, Memory Event Type for possible
57 # @transaction-type: Type of first transaction that caused the event
58 # to occur. See CXL r3.0 Table 8-43 General Media Event Record,
59 # Transaction Type for possible values.
61 # @channel: The channel of the memory event location. A channel is an
62 # interface that can be independently accessed for a transaction.
64 # @rank: The rank of the memory event location. A rank is a set of
65 # memory devices on a channel that together execute a transaction.
67 # @device: Bitmask that represents all devices in the rank associated
68 # with the memory event location.
70 # @component-id: Device specific component identifier for the event.
71 # May describe a field replaceable sub-component of the device.
75 { 'command': 'cxl-inject-general-media-event',
76 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8',
77 'dpa': 'uint64', 'descriptor': 'uint8',
78 'type': 'uint8', 'transaction-type': 'uint8',
79 '*channel': 'uint8', '*rank': 'uint8',
80 '*device': 'uint32', '*component-id': 'str' } }
83 # @cxl-inject-dram-event:
85 # Inject an event record for a DRAM Event (CXL r3.0 8.2.9.2.1.2).
86 # This event type is reported via one of the event logs specified via
89 # @path: CXL type 3 device canonical QOM path
91 # @log: Event log to add the event to
93 # @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event
94 # Record Format, Event Record Flags for subfield definitions.
96 # @dpa: Device Physical Address (relative to @path device). Note
97 # lower bits include some flags. See CXL r3.0 Table 8-44 DRAM
98 # Event Record, Physical Address.
100 # @descriptor: Memory Event Descriptor with additional memory event
101 # information. See CXL r3.0 Table 8-44 DRAM Event Record, Memory
102 # Event Descriptor for bit definitions.
104 # @type: Type of memory event that occurred. See CXL r3.0 Table 8-44
105 # DRAM Event Record, Memory Event Type for possible values.
107 # @transaction-type: Type of first transaction that caused the event
108 # to occur. See CXL r3.0 Table 8-44 DRAM Event Record,
109 # Transaction Type for possible values.
111 # @channel: The channel of the memory event location. A channel is an
112 # interface that can be independently accessed for a transaction.
114 # @rank: The rank of the memory event location. A rank is a set of
115 # memory devices on a channel that together execute a transaction.
117 # @nibble-mask: Identifies one or more nibbles that the error affects
119 # @bank-group: Bank group of the memory event location, incorporating
122 # @bank: Bank of the memory event location. A single bank is accessed
123 # per read or write of the memory.
125 # @row: Row address within the DRAM.
127 # @column: Column address within the DRAM.
129 # @correction-mask: Bits within each nibble. Used in order of bits
130 # set in the nibble-mask. Up to 4 nibbles may be covered.
134 { 'command': 'cxl-inject-dram-event',
135 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8',
136 'dpa': 'uint64', 'descriptor': 'uint8',
137 'type': 'uint8', 'transaction-type': 'uint8',
138 '*channel': 'uint8', '*rank': 'uint8', '*nibble-mask': 'uint32',
139 '*bank-group': 'uint8', '*bank': 'uint8', '*row': 'uint32',
140 '*column': 'uint16', '*correction-mask': [ 'uint64' ]
144 # @cxl-inject-poison:
146 # Poison records indicate that a CXL memory device knows that a
147 # particular memory region may be corrupted. This may be because of
148 # locally detected errors (e.g. ECC failure) or poisoned writes
149 # received from other components in the system. This injection
150 # mechanism enables testing of the OS handling of poison records which
151 # may be queried via the CXL mailbox.
153 # @path: CXL type 3 device canonical QOM path
155 # @start: Start address; must be 64 byte aligned.
157 # @length: Length of poison to inject; must be a multiple of 64 bytes.
161 { 'command': 'cxl-inject-poison',
162 'data': { 'path': 'str', 'start': 'uint64', 'length': 'size' }}
165 # @CxlUncorErrorType:
167 # Type of uncorrectable CXL error to inject. These errors are
168 # reported via an AER uncorrectable internal error with additional
169 # information logged at the CXL device.
171 # @cache-data-parity: Data error such as data parity or data ECC error
174 # @cache-address-parity: Address parity or other errors associated
175 # with the address field on CXL.cache
177 # @cache-be-parity: Byte enable parity or other byte enable errors on
180 # @cache-data-ecc: ECC error on CXL.cache
182 # @mem-data-parity: Data error such as data parity or data ECC error
185 # @mem-address-parity: Address parity or other errors associated with
186 # the address field on CXL.mem
188 # @mem-be-parity: Byte enable parity or other byte enable errors on
191 # @mem-data-ecc: Data ECC error on CXL.mem.
193 # @reinit-threshold: REINIT threshold hit.
195 # @rsvd-encoding: Received unrecognized encoding.
197 # @poison-received: Received poison from the peer.
199 # @receiver-overflow: Buffer overflows (first 3 bits of header log
202 # @internal: Component specific error
204 # @cxl-ide-tx: Integrity and data encryption tx error.
206 # @cxl-ide-rx: Integrity and data encryption rx error.
211 { 'enum': 'CxlUncorErrorType',
212 'data': ['cache-data-parity',
213 'cache-address-parity',
217 'mem-address-parity',
231 # @CXLUncorErrorRecord:
233 # Record of a single error including header log.
235 # @type: Type of error
237 # @header: 16 DWORD of header.
241 { 'struct': 'CXLUncorErrorRecord',
243 'type': 'CxlUncorErrorType',
244 'header': [ 'uint32' ]
249 # @cxl-inject-uncorrectable-errors:
251 # Command to allow injection of multiple errors in one go. This
252 # allows testing of multiple header log handling in the OS.
254 # @path: CXL Type 3 device canonical QOM path
256 # @errors: Errors to inject
260 { 'command': 'cxl-inject-uncorrectable-errors',
261 'data': { 'path': 'str',
262 'errors': [ 'CXLUncorErrorRecord' ] }}
267 # Type of CXL correctable error to inject
269 # @cache-data-ecc: Data ECC error on CXL.cache
271 # @mem-data-ecc: Data ECC error on CXL.mem
273 # @crc-threshold: Component specific and applicable to 68 byte Flit
276 # @cache-poison-received: Received poison from a peer on CXL.cache.
278 # @mem-poison-received: Received poison from a peer on CXL.mem
280 # @physical: Received error indication from the physical layer.
284 { 'enum': 'CxlCorErrorType',
285 'data': ['cache-data-ecc',
289 'cache-poison-received',
290 'mem-poison-received',
295 # @cxl-inject-correctable-error:
297 # Command to inject a single correctable error. Multiple error
298 # injection of this error type is not interesting as there is no
299 # associated header log. These errors are reported via AER as a
300 # correctable internal error, with additional detail available from
303 # @path: CXL Type 3 device canonical QOM path
305 # @type: Type of error.
309 {'command': 'cxl-inject-correctable-error',
310 'data': {'path': 'str', 'type': 'CxlCorErrorType'}}