On Mon, Jan 19, 2026 at 3:21 AM Jonathan Cameron <[email protected]> wrote: > > From: Shiju Jose <[email protected]> > > Refactor CXL event injection to use struct for common command > arguments. > > Suggested-by: Markus Armbruster <[email protected]> > Signed-off-by: Shiju Jose <[email protected]> > Signed-off-by: Jonathan Cameron <[email protected]> > > --- > v3: Fix wrong comment for memory module event (Markus) > --- > qapi/cxl.json | 89 +++++++++++++++++++++++++++++++++------------------ > 1 file changed, 58 insertions(+), 31 deletions(-) > > diff --git a/qapi/cxl.json b/qapi/cxl.json > index eeddb58d1d3f..55a088586e53 100644 > --- a/qapi/cxl.json > +++ b/qapi/cxl.json > @@ -31,11 +31,10 @@ > } > > ## > -# @cxl-inject-general-media-event: > +# @CXLCommonEventBase: > # > -# 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. > +# Common event base for a CXL Event (CXL r3.0 8.2.9.2.1 > +# Table 8-42 Common Event Record Format). > # > # @path: CXL type 3 device canonical QOM path > # > @@ -44,6 +43,16 @@ > # @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event > # Record Format, Event Record Flags for subfield definitions. > # > +# Since: 8.1 > +## > +{ 'struct': 'CXLCommonEventBase', > + 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8' } } > + > +## > +# @CXLGeneralMediaEvent: > +# > +# Event record for a General Media Event (CXL r3.0 8.2.9.2.1.1). > +# > # @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. > @@ -74,26 +83,29 @@ > # > # Since: 8.1 > ## > -{ 'command': 'cxl-inject-general-media-event', > - 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8', > - 'dpa': 'uint64', 'descriptor': 'uint8', > +{ 'struct': 'CXLGeneralMediaEvent', > + 'base': 'CXLCommonEventBase', > + 'data': { '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. > +# @cxl-inject-general-media-event: > # > -# @path: CXL type 3 device canonical QOM path > +# 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. > # > -# @log: Event log to add the event to > +# Since: 8.1 > +## > +{ 'command': 'cxl-inject-general-media-event', > + 'data': 'CXLGeneralMediaEvent' } > + > +## > +# @CXLDRAMEvent: > # > -# @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event > -# Record Format, Event Record Flags for subfield definitions. > +# Event record for a DRAM Event (CXL r3.0 8.2.9.2.1.2). > # > # @dpa: Device Physical Address (relative to @path device). Note > # lower bits include some flags. See CXL r3.0 Table 8-44 DRAM > @@ -133,9 +145,9 @@ > # > # Since: 8.1 > ## > -{ 'command': 'cxl-inject-dram-event', > - 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8', > - 'dpa': 'uint64', 'descriptor': 'uint8', > +{ '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', > @@ -143,18 +155,21 @@ > }} > > ## > -# @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. > +# @cxl-inject-dram-event: > # > -# @path: CXL type 3 device canonical QOM path > +# 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. > # > -# @log: Event Log to add the event to > +# Since: 8.1 > +## > +{ 'command': 'cxl-inject-dram-event', > + 'data': 'CXLDRAMEvent' } > + > +## > +# @CXLMemModuleEvent: > # > -# @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event > -# Record Format, Event Record Flags for subfield definitions. > +# Event record for a Memory Module Event (CXL r3.0 8.2.9.2.1.3). > # > # @type: Device Event Type. See CXL r3.0 Table 8-45 Memory Module > # Event Record for bit definitions for bit definiions. > @@ -185,9 +200,9 @@ > # > # Since: 8.1 > ## > -{ 'command': 'cxl-inject-memory-module-event', > - 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags' : 'uint8', > - 'type': 'uint8', 'health-status': 'uint8', > +{ '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', > @@ -195,6 +210,18 @@ > 'corrected-persistent-error-count': 'uint32' > }} > > +## > +# @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. > +# > +# Since: 8.1 > +## > +{ 'command': 'cxl-inject-memory-module-event', > + 'data': 'CXLMemModuleEvent' } > + > ## > # @cxl-inject-poison: > # > -- > 2.48.1 > > No comments.
Reviewed-by: Ravi Jonnalagadda <[email protected]>
