Jonathan Cameron <jonathan.came...@huawei.com> writes: > These events include a copy of the device health information at the > time of the event. Actually using the emulated device health would > require a lot of controls to manipulate that state. Given the aim > of this injection code is to just test the flows when events occur, > inject the contents of the device health state as well. > > Future work may add more sophisticate device health emulation > including direct generation of these records when events occur > (such as a temperature threshold being crossed). That does not > reduce the usefulness of this more basic generation of the events. > > Acked-by: Markus Armbruster <arm...@redhat.com> > Reviewed-by: Fan Ni <fan...@samsung.com> > Reviewed-by: Ira Weiny <ira.we...@intel.com> > Signed-off-by: Jonathan Cameron <jonathan.came...@huawei.com> > --- > qapi/cxl.json | 53 +++++++++++++++++++++++++++++++ > include/hw/cxl/cxl_events.h | 19 ++++++++++++ > hw/mem/cxl_type3.c | 62 +++++++++++++++++++++++++++++++++++++ > hw/mem/cxl_type3_stubs.c | 12 +++++++ > 4 files changed, 146 insertions(+) > > diff --git a/qapi/cxl.json b/qapi/cxl.json > index 36bf9fa202..a2e1280573 100644 > --- a/qapi/cxl.json > +++ b/qapi/cxl.json > @@ -140,6 +140,59 @@ > '*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
Two spaces between sentences for consistency, please. > +# 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 correctable errors 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: > # Neither these nitpicks nor the one on PATCH 5 calls for a respin. Simply fix them in the PR. Thanks! [...]