From: Ira Weiny <ira.we...@intel.com>

CXL Event records inform the OS of various CXL device events.  Thus far CXL
memory devices are emulated and therefore don't naturally have events which
will occur.

Add mock events and a HMP trigger mechanism to facilitate guest OS testing of
event support.

This support requires a follow on version of the event patch set.  The RFC was
submitted and discussed here:

        
https://lore.kernel.org/linux-cxl/20220813053243.757363-1-ira.we...@intel.com/

I'll post the lore link to the new version shortly.

Instructions for running this test.

Add qmp option to qemu:

        <host> $ qemu-system-x86_64 ... -qmp 
unix:/tmp/run_qemu_qmp_0,server,nowait ...

        OR

        <host> $ run_qemu.sh ... --qmp ...

Enable tracing of events within the guest:

        <guest> $ echo "" > /sys/kernel/tracing/trace
        <guest> $ echo 1 > /sys/kernel/tracing/events/cxl/enable
        <guest> $ echo 1 > /sys/kernel/tracing/tracing_on

Trigger event generation and interrupts in the host:

        <host> $ echo "cxl_event_inject cxl-devX" | qmp-shell -H 
/tmp/run_qemu_qmp_0

        Where X == one of the memory devices; cxl-dev0 should work.

View events on the guest:

        <guest> $ cat /sys/kernel/tracing/trace


Ira Weiny (6):
  qemu/bswap: Add const_le64()
  qemu/uuid: Add UUID static initializer
  hw/cxl/cxl-events: Add CXL mock events
  hw/cxl/mailbox: Wire up get/clear event mailbox commands
  hw/cxl/cxl-events: Add event interrupt support
  hw/cxl/mailbox: Wire up Get/Set Event Interrupt policy

 hmp-commands.hx             |  14 ++
 hw/cxl/cxl-device-utils.c   |   1 +
 hw/cxl/cxl-events.c         | 330 ++++++++++++++++++++++++++++++++++++
 hw/cxl/cxl-host-stubs.c     |   5 +
 hw/cxl/cxl-mailbox-utils.c  | 224 +++++++++++++++++++++---
 hw/cxl/meson.build          |   1 +
 hw/mem/cxl_type3.c          |   7 +-
 include/hw/cxl/cxl_device.h |  22 +++
 include/hw/cxl/cxl_events.h | 194 +++++++++++++++++++++
 include/qemu/bswap.h        |  10 ++
 include/qemu/uuid.h         |  12 ++
 include/sysemu/sysemu.h     |   3 +
 12 files changed, 802 insertions(+), 21 deletions(-)
 create mode 100644 hw/cxl/cxl-events.c
 create mode 100644 include/hw/cxl/cxl_events.h


base-commit: 6f7f81898e4437ea544ee4ca24bef7ec543b1f06
-- 
2.37.2


Reply via email to