# -*- 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']
 }

##
# @cxl-inject-general-media-event:
#
# Inject an event record for a General Media Event (CXL r3.0
# 8.2.9.2.1.1).  This event type is reported via one of the event logs
# specified via the log parameter.
#
# @path: CXL type 3 device canonical QOM path
#
# @log: event log to add the event to
#
# @flags: Event Record Flags.  See CXL r3.0 Table 8-42 Common Event
#     Record Format, Event Record Flags for subfield definitions.
#
# @dpa: Device Physical Address (relative to @path device).  Note
#     lower bits include some flags.  See CXL r3.0 Table 8-43 General
#     Media Event Record, Physical Address.
#
# @descriptor: Memory Event Descriptor with additional memory event
#     information.  See CXL r3.0 Table 8-43 General Media Event
#     Record, Memory Event Descriptor for bit definitions.
#
# @type: Type of memory event that occurred.  See CXL r3.0 Table 8-43
#     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.0 Table 8-43 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.
#
# Since: 8.1
##
{ 'command': 'cxl-inject-general-media-event',
  'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8',
            'dpa': 'uint64', 'descriptor': 'uint8',
            'type': 'uint8', 'transaction-type': 'uint8',
            '*channel': 'uint8', '*rank': 'uint8',
            '*device': 'uint32', '*component-id': 'str' } }

##
# @cxl-inject-dram-event:
#
# Inject an event record for a DRAM Event (CXL r3.0 8.2.9.2.1.2).
# This event type is reported via one of the event logs specified via
# the log parameter.
#
# @path: CXL type 3 device canonical QOM path
#
# @log: Event log to add the event to
#
# @flags: Event Record Flags.  See CXL r3.0 Table 8-42 Common Event
#     Record Format, Event Record Flags for subfield definitions.
#
# @dpa: Device Physical Address (relative to @path device).  Note
#     lower bits include some flags.  See CXL r3.0 Table 8-44 DRAM
#     Event Record, Physical Address.
#
# @descriptor: Memory Event Descriptor with additional memory event
#     information.  See CXL r3.0 Table 8-44 DRAM Event Record, Memory
#     Event Descriptor for bit definitions.
#
# @type: Type of memory event that occurred.  See CXL r3.0 Table 8-44
#     DRAM Event Record, Memory Event Type for possible values.
#
# @transaction-type: Type of first transaction that caused the event
#     to occur.  See CXL r3.0 Table 8-44 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.
#
# Since: 8.1
##
{ 'command': 'cxl-inject-dram-event',
  'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8',
            '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' ]
           }}

##
# @cxl-inject-memory-module-event:
#
# Inject an event record for a Memory Module Event (CXL r3.0
# 8.2.9.2.1.3).  This event includes a copy of the Device Health info
# at the time of the event.
#
# @path: CXL type 3 device canonical QOM path
#
# @log: Event Log to add the event to
#
# @flags: Event Record Flags.  See CXL r3.0 Table 8-42 Common Event
#     Record Format, Event Record Flags for subfield definitions.
#
# @type: Device Event Type.  See CXL r3.0 Table 8-45 Memory Module
#     Event Record for bit definitions for bit definiions.
#
# @health-status: Overall health summary bitmap.  See CXL r3.0 Table
#     8-100 Get Health Info Output Payload, Health Status for bit
#     definitions.
#
# @media-status: Overall media health summary.  See CXL r3.0 Table
#     8-100 Get Health Info Output Payload, Media Status for bit
#     definitions.
#
# @additional-status: See CXL r3.0 Table 8-100 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
#
# Since: 8.1
##
{ 'command': 'cxl-inject-memory-module-event',
  'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags' : 'uint8',
            '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'
            }}

##
# @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' ]
}
