[RFC PATCH 0/6] QEMU CXL Provide mock CXL events and irq support

ira.weiny@intel.com posted 6 patches 1 year, 7 months ago
Failed in applying to current master (apply log)
There is a newer version of this series
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
[RFC PATCH 0/6] QEMU CXL Provide mock CXL events and irq support
Posted by ira.weiny@intel.com 1 year, 7 months ago
From: Ira Weiny <ira.weiny@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.weiny@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
Re: [RFC PATCH 0/6] QEMU CXL Provide mock CXL events and irq support
Posted by Ira Weiny 1 year, 7 months ago
On Mon, Oct 10, 2022 at 03:29:38PM -0700, Ira wrote:
> From: Ira Weiny <ira.weiny@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.weiny@intel.com/
> 
> I'll post the lore link to the new version shortly.

Kernel support now posted here:

	https://lore.kernel.org/all/20221010224131.1866246-1-ira.weiny@intel.com/

Ira

> 
> 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
>
Re: [RFC PATCH 0/6] QEMU CXL Provide mock CXL events and irq support
Posted by Jonathan Cameron via 1 year, 7 months ago
On Mon, 10 Oct 2022 15:29:38 -0700
ira.weiny@intel.com wrote:

> From: Ira Weiny <ira.weiny@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.weiny@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

Hi Ira,

Why is this an RFC rather than a patch set to apply?

It's useful to have that in the cover letter so we can focus on what
you want comments on (rather than simply review).

Thanks,

Jonathan

> 
> 
> 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
Re: [RFC PATCH 0/6] QEMU CXL Provide mock CXL events and irq support
Posted by Ira Weiny 1 year, 7 months ago
On Tue, Oct 11, 2022 at 10:40:06AM +0100, Jonathan Cameron wrote:
> On Mon, 10 Oct 2022 15:29:38 -0700
> ira.weiny@intel.com wrote:
> 
> > From: Ira Weiny <ira.weiny@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.weiny@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
> 
> Hi Ira,
> 
> Why is this an RFC rather than a patch set to apply?

I really just wanted to see what people think of the over all idea.  The
patches themselves stand on their own if the QEMU community is ok using QEMU as
a test vehicle like this.

> 
> It's useful to have that in the cover letter so we can focus on what
> you want comments on (rather than simply review).

Yes sorry,
Ira

> 
> Thanks,
> 
> Jonathan
> 
> > 
> > 
> > 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
>