# -*- Mode: Python -*-
# vim: filetype=python

##
# ***********
# CXL devices
# ***********
##

##
# @CxlEventLog:
#
# CXL has a number of separate event logs for different types of
# events.  Each such event log is handled and signaled independently.
#
# @informational: Information Event Log
#
# @warning: Warning Event Log
#
# @failure: Failure Event Log
#
# @fatal: Fatal Event Log
#
# Since: 8.1
##
{ 'enum': 'CxlEventLog',
  'data': ['informational',
           'warning',
           'failure',
           'fatal']
 }

##
# @CXLCommonEventBase:
#
# Common event base for a CXL Event (CXL r3.2 8.2.10.2.1
# Table 8-55 Common Event Record Format).
#
# @path: CXL type 3 device canonical QOM path
#
# @log: event log to add the event to
#
# @flags: Event Record Flags.  See CXL r3.2 Table 8-55 Common Event
#     Record Format, Event Record Flags for subfield definitions.
#
# @maint-op-class: Maintenance operation class the device requests to
#     initiate.
#
# @maint-op-subclass: Maintenance operation subclass the device
#     requests to initiate.
#
# @ld-id: Logical Device (LD) ID of LD from where the event
#     originated.
#
# @head-id: ID of the device head from where the event originated.
#
# Since: 8.1
##
{ 'struct': 'CXLCommonEventBase',
  'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint32',
            '*maint-op-class':'uint8', '*maint-op-subclass':'uint8',
            '*ld-id':'uint16', '*head-id':'uint8' } }

##
# @CXLGeneralMediaEvent:
#
# Event record for a General Media Event (CXL r3.2 8.2.10.2.1.1).
#
# @dpa: Device Physical Address (relative to @path device).  Note
#     lower bits include some flags.  See CXL r3.2 Table 8-57 General
#     Media Event Record, Physical Address.
#
# @descriptor: Memory Event Descriptor with additional memory event
#     information.  See CXL r3.2 Table 8-57 General Media Event
#     Record, Memory Event Descriptor for bit definitions.
#
# @type: Type of memory event that occurred.  See CXL r3.2 Table 8-57
#     General Media Event Record, Memory Event Type for possible
#     values.
#
# @transaction-type: Type of first transaction that caused the event
#     to occur.  See CXL r3-2 Table 8-57 General Media Event Record,
#     Transaction Type for possible values.
#
# @channel: The channel of the memory event location.  A channel is an
#     interface that can be independently accessed for a transaction.
#
# @rank: The rank of the memory event location.  A rank is a set of
#     memory devices on a channel that together execute a transaction.
#
# @device: Bitmask that represents all devices in the rank associated
#     with the memory event location.
#
# @component-id: Device specific component identifier for the event.
#     May describe a field replaceable sub-component of the device.
#
# @is-comp-id-pldm: This flag specifies whether the device-specific
#     component identifier format follows PLDM.
#
# @cme-ev-flags: Advanced programmable corrected memory error
#     threshold event flags.
#
# @cme-count: Corrected memory error count at event.
#
# @sub-type: Memory event sub-type.
#
# Since: 8.1
##
{ 'struct': 'CXLGeneralMediaEvent',
  'base': 'CXLCommonEventBase',
  'data': { 'dpa': 'uint64', 'descriptor': 'uint8',
            'type': 'uint8', 'transaction-type': 'uint8',
            '*channel': 'uint8', '*rank': 'uint8',
            '*device': 'uint32', '*component-id': 'str',
            '*is-comp-id-pldm':'bool',
            '*cme-ev-flags':'uint8', '*cme-count':'uint32',
            'sub-type':'uint8' } }

##
# @cxl-inject-general-media-event:
#
# Inject an event record for a General Media Event (CXL r3.2
# 8.2.10.2.1.1).  This event type is reported via one of the event
# logs specified via the log parameter.
#
# Since: 8.1
##
{ 'command': 'cxl-inject-general-media-event',
  'data': 'CXLGeneralMediaEvent' }

##
# @CXLDRAMEvent:
#
# Event record for a DRAM Event (CXL r3.2 8.2.10.2.1.2).
#
# @dpa: Device Physical Address (relative to @path device).  Note
#     lower bits include some flags.  See CXL r3.2 Table 8-58 DRAM
#     Event Record, Physical Address.
#
# @descriptor: Memory Event Descriptor with additional memory event
#     information.  See CXL r3.2 Table 8-58 DRAM Event Record, Memory
#     Event Descriptor for bit definitions.
#
# @type: Type of memory event that occurred.  See CXL r3.2 Table 8-58
#     DRAM Event Record, Memory Event Type for possible values.
#
# @transaction-type: Type of first transaction that caused the event
#     to occur.  See CXL r3.2 Table 8-58 DRAM Event Record,
#     Transaction Type for possible values.
#
# @channel: The channel of the memory event location.  A channel is an
#     interface that can be independently accessed for a transaction.
#
# @rank: The rank of the memory event location.  A rank is a set of
#     memory devices on a channel that together execute a transaction.
#
# @nibble-mask: Identifies one or more nibbles that the error affects
#
# @bank-group: Bank group of the memory event location, incorporating
#     a number of banks.
#
# @bank: Bank of the memory event location.  A single bank is accessed
#     per read or write of the memory.
#
# @row: Row address within the DRAM.
#
# @column: Column address within the DRAM.
#
# @correction-mask: Bits within each nibble.  Used in order of bits
#     set in the nibble-mask.  Up to 4 nibbles may be covered.
#
# @component-id: Device specific component identifier for the event.
#     May describe a field replaceable sub-component of the device.
#
# @is-comp-id-pldm: This flag specifies whether the device-specific
#     component identifier format follows PLDM.
#
# @sub-channel: The sub-channel of the memory event location.
#
# @cme-ev-flags: Advanced programmable corrected memory error
#     threshold event flags.
#
# @cvme-count: Corrected volatile memory error count at event.
#
# @sub-type: Memory event sub-type.
#
# Since: 8.1
##
{ 'struct': 'CXLDRAMEvent',
  'base': 'CXLCommonEventBase',
  'data': { 'dpa': 'uint64', 'descriptor': 'uint8',
            'type': 'uint8', 'transaction-type': 'uint8',
            '*channel': 'uint8', '*rank': 'uint8', '*nibble-mask': 'uint32',
            '*bank-group': 'uint8', '*bank': 'uint8', '*row': 'uint32',
            '*column': 'uint16', '*correction-mask': [ 'uint64' ],
            '*component-id': 'str', '*is-comp-id-pldm':'bool',
            '*sub-channel':'uint8',
            '*cme-ev-flags':'uint8', '*cvme-count':'uint32',
            'sub-type':'uint8'
           }}

##
# @cxl-inject-dram-event:
#
# Inject an event record for a DRAM Event (CXL r3.2 8.2.10.2.1.2).
# This event type is reported via one of the event logs
# specified via the log parameter.
#
# Since: 8.1
##
{ 'command': 'cxl-inject-dram-event',
  'data': 'CXLDRAMEvent' }

##
# @CXLMemModuleEvent:
#
# Event record for a Memory Module Event (CXL r3.2 8.2.10.2.1.3).
#
# @type: Device Event Type.  See CXL r3.2 Table 8-59 Memory Module
#     Event Record for bit definitions for bit definiions.
#
# @health-status: Overall health summary bitmap.  See CXL r3.2 Table
#     8-148 Get Health Info Output Payload, Health Status for bit
#     definitions.
#
# @media-status: Overall media health summary.  See CXL r3.2 Table
#     8-148 Get Health Info Output Payload, Media Status for bit
#     definitions.
#
# @additional-status: See CXL r3.2 Table 8-148 Get Health Info Output
#     Payload, Additional Status for subfield definitions.
#
# @life-used: Percentage (0-100) of factory expected life span.
#
# @temperature: Device temperature in degrees Celsius.
#
# @dirty-shutdown-count: Number of times the device has been unable to
#     determine whether data loss may have occurred.
#
# @corrected-volatile-error-count: Total number of correctable errors
#     in volatile memory.
#
# @corrected-persistent-error-count: Total number of correctable
#     errors in persistent memory
#
# @component-id: Device specific component identifier for the event.
#     May describe a field replaceable sub-component of the device.
#
# @is-comp-id-pldm: This flag specifies whether the device-specific
#     component identifier format follows PLDM.
#
# @sub-type: Device event sub-type.
#
# Since: 8.1
##
{ 'struct': 'CXLMemModuleEvent',
  'base': 'CXLCommonEventBase',
  'data': { 'type': 'uint8', 'health-status': 'uint8',
            'media-status': 'uint8', 'additional-status': 'uint8',
            'life-used': 'uint8', 'temperature' : 'int16',
            'dirty-shutdown-count': 'uint32',
            'corrected-volatile-error-count': 'uint32',
            'corrected-persistent-error-count': 'uint32',
            '*component-id': 'str', '*is-comp-id-pldm':'bool',
            'sub-type':'uint8'
            }}

##
# @cxl-inject-memory-module-event:
#
# Inject an event record for a Memory Module Event (CXL r3.2
# 8.2.10.2.1.3).  This event includes a copy of the Device Health info
# at the time of the event.
#
# Since: 8.1
##
{ 'command': 'cxl-inject-memory-module-event',
  'data': 'CXLMemModuleEvent' }

##
# @cxl-inject-poison:
#
# Poison records indicate that a CXL memory device knows that a
# particular memory region may be corrupted.  This may be because of
# locally detected errors (e.g. ECC failure) or poisoned writes
# received from other components in the system.  This injection
# mechanism enables testing of the OS handling of poison records which
# may be queried via the CXL mailbox.
#
# @path: CXL type 3 device canonical QOM path
#
# @start: Start address; must be 64 byte aligned.
#
# @length: Length of poison to inject; must be a multiple of 64 bytes.
#
# Since: 8.1
##
{ 'command': 'cxl-inject-poison',
  'data': { 'path': 'str', 'start': 'uint64', 'length': 'size' }}

##
# @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.
#
# @retry-threshold: Retry threshold hit in the Local Retry State
#     Machine, 68B Flits 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'}}

##
# @CxlDynamicCapacityExtent:
#
# A single dynamic capacity extent.  This is a contiguous allocation
# of memory by Device Physical Address within a single Dynamic
# Capacity Region on a CXL Type 3 Device.
#
# @offset: The offset (in bytes) to the start of the region where the
#     extent belongs to.
#
# @len: The length of the extent in bytes.
#
# Since: 9.1
##
{ 'struct': 'CxlDynamicCapacityExtent',
  'data': {
      'offset':'uint64',
      'len': 'uint64'
  }
}

##
# @CxlExtentSelectionPolicy:
#
# The policy to use for selecting which extents comprise the added
# capacity, as defined in Compute Express Link (CXL) Specification,
# Revision 3.1, Table 7-70.
#
# @free: Device is responsible for allocating the requested memory
#     capacity and is free to do this using any combination of
#     supported extents.
#
# @contiguous: Device is responsible for allocating the requested
#     memory capacity but must do so as a single contiguous
#     extent.
#
# @prescriptive: The precise set of extents to be allocated is
#     specified by the command.  Thus allocation is being managed
#     by the issuer of the allocation command, not the device.
#
# @enable-shared-access: Capacity has already been allocated to a
#     different host using free, contiguous or prescriptive policy
#     with a known tag.  This policy then instructs the device to make
#     the capacity with the specified tag available to an additional
#     host.  Capacity is implicit as it matches that already
#     associated with the tag.  Note that the extent list (and hence
#     Device Physical Addresses) used are per host, so a device may
#     use different representations on each host.  The ordering of the
#     extents provided to each host is indicated to the host using per
#     extent sequence numbers generated by the device.  Has a similar
#     meaning for temporal sharing, but in that case there may be only
#     one host involved.
#
# Since: 9.1
##
{ 'enum': 'CxlExtentSelectionPolicy',
  'data': ['free',
           'contiguous',
           'prescriptive',
           'enable-shared-access']
}

##
# @cxl-add-dynamic-capacity:
#
# Initiate adding dynamic capacity extents to a host.  This simulates
# operations defined in Compute Express Link (CXL) Specification,
# Revision 3.1, Section 7.6.7.6.5.  Note that, currently, establishing
# success or failure of the full Add Dynamic Capacity flow requires
# out of band communication with the OS of the CXL host.
#
# @path: path to the CXL Dynamic Capacity Device in the QOM tree.
#
# @host-id: The "Host ID" field as defined in Compute Express Link
#     (CXL) Specification, Revision 3.1, Table 7-70.
#
# @selection-policy: The "Selection Policy" bits as defined in
#     Compute Express Link (CXL) Specification, Revision 3.1,
#     Table 7-70.  It specifies the policy to use for selecting
#     which extents comprise the added capacity.
#
# @region: The "Region Number" field as defined in Compute Express
#     Link (CXL) Specification, Revision 3.1, Table 7-70.  Valid
#     range is from 0-7.
#
# @tag: The "Tag" field as defined in Compute Express Link (CXL)
#     Specification, Revision 3.1, Table 7-70.
#
# @extents: The "Extent List" field as defined in Compute Express Link
#     (CXL) Specification, Revision 3.1, Table 7-70.
#
# Features:
#
# @unstable: For now this command is subject to change.
#
# Since: 9.1
##
{ 'command': 'cxl-add-dynamic-capacity',
  'data': { 'path': 'str',
            'host-id': 'uint16',
            'selection-policy': 'CxlExtentSelectionPolicy',
            'region': 'uint8',
            '*tag': 'str',
            'extents': [ 'CxlDynamicCapacityExtent' ]
           },
  'features': [ 'unstable' ]
}

##
# @CxlExtentRemovalPolicy:
#
# The policy to use for selecting which extents comprise the released
# capacity, defined in the "Flags" field in Compute Express Link (CXL)
# Specification, Revision 3.1, Table 7-71.
#
# @tag-based: Extents are selected by the device based on tag, with
#     no requirement for contiguous extents.
#
# @prescriptive: Extent list of capacity to release is included in
#     the request payload.
#
# Since: 9.1
##
{ 'enum': 'CxlExtentRemovalPolicy',
  'data': ['tag-based',
           'prescriptive']
}

##
# @cxl-release-dynamic-capacity:
#
# Initiate release of dynamic capacity extents from a host.  This
# simulates operations defined in Compute Express Link (CXL)
# Specification, Revision 3.1, Section 7.6.7.6.6.  Note that,
# currently, success or failure of the full Release Dynamic Capacity
# flow requires out of band communication with the OS of the CXL host.
#
# @path: path to the CXL Dynamic Capacity Device in the QOM tree.
#
# @host-id: The "Host ID" field as defined in Compute Express Link
#     (CXL) Specification, Revision 3.1, Table 7-71.
#
# @removal-policy: Bit[3:0] of the "Flags" field as defined in
#     Compute Express Link (CXL) Specification, Revision 3.1,
#     Table 7-71.
#
# @forced-removal: Bit[4] of the "Flags" field in Compute Express
#     Link (CXL) Specification, Revision 3.1, Table 7-71.  When set,
#     the device does not wait for a Release Dynamic Capacity command
#     from the host.  Instead, the host immediately looses access to
#     the released capacity.
#
# @sanitize-on-release: Bit[5] of the "Flags" field in Compute Express
#     Link (CXL) Specification, Revision 3.1, Table 7-71.  When set,
#     the device should sanitize all released capacity as a result of
#     this request.  This ensures that all user data and metadata is
#     made permanently unavailable by whatever means is appropriate
#     for the media type.  Note that changing encryption keys is not
#     sufficient.
#
# @region: The "Region Number" field as defined in Compute Express
#     Link Specification, Revision 3.1, Table 7-71.  Valid range
#     is from 0-7.
#
# @tag: The "Tag" field as defined in Compute Express Link (CXL)
#     Specification, Revision 3.1, Table 7-71.
#
# @extents: The "Extent List" field as defined in Compute Express
#     Link (CXL) Specification, Revision 3.1, Table 7-71.
#
# Features:
#
# @unstable: For now this command is subject to change.
#
# Since: 9.1
##
{ 'command': 'cxl-release-dynamic-capacity',
  'data': { 'path': 'str',
            'host-id': 'uint16',
            'removal-policy': 'CxlExtentRemovalPolicy',
            '*forced-removal': 'bool',
            '*sanitize-on-release': 'bool',
            'region': 'uint8',
            '*tag': 'str',
            'extents': [ 'CxlDynamicCapacityExtent' ]
           },
  'features': [ 'unstable' ]
}
