Message ID | 20221010222944.3923556-1-ira.weiny@intel.com |
---|---|
Headers | show |
Series | QEMU CXL Provide mock CXL events and irq support | expand |
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 >
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
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 >
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