Jonathan Cameron <[email protected]> writes:
> From: Ira Weiny <[email protected]>
>
> To facilitate testing provide a QMP command to inject a general media
> event. The event can be added to the log specified.
>
> Signed-off-by: Ira Weiny <[email protected]>
> Signed-off-by: Jonathan Cameron <[email protected]>
>
> ---
> v7: Various docs updates and field renames including a lot more
> specification references.
> ---
> qapi/cxl.json | 79 +++++++++++++++++++++++++
> include/hw/cxl/cxl_events.h | 20 +++++++
> hw/mem/cxl_type3.c | 111 ++++++++++++++++++++++++++++++++++++
> hw/mem/cxl_type3_stubs.c | 10 ++++
> 4 files changed, 220 insertions(+)
>
> diff --git a/qapi/cxl.json b/qapi/cxl.json
> index 4849fca776..7700e26a0d 100644
> --- a/qapi/cxl.json
> +++ b/qapi/cxl.json
> @@ -5,6 +5,85 @@
> # = 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.
Two spaces between sentences please, for consistency.
> +#
> +# @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
Period at end of sentence, please:
# 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.
Please format like
# @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.
to blend in with recent commit a937b6aa739 (qapi: Reformat doc comments
to conform to current conventions).
> +#
> +# 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-poison:
> #
With these tweaks
Acked-by: Markus Armbruster <[email protected]>
[...]