This is what's in flux on top of the series posted as v7.
It contains both the PV back end support and the PIRQ support which were
previous posted in separate series. The former is mostly unchanged, and
we still need to either port that C++ XenStore implementation or make
Xen's own xenstored stop crashing when run without a real Xen. Although
the basic ops table support is probably sane enough to go in; it just
wants testing on real Xen.
As noted, it would have been nice to remove the old Xen headers in the
first phase of patches with the initial platform support, but it really
does need the header untangling which occurs as we go through the
backend and introduce the generic ops support.
The PIRQ support is significantly reworked and I think I've fixed up
the locking issues, and tested with both emulated and VFIO passthrough
devices for MSI and MSI-X to PIRQ mappings.
I do need to disable the KVM irqfd routing if there are VFIO devices and
the kernel is old enough not to support native evtchn delivery. I have
plans around that¹ but was hoping to avoid them becoming a dependency of
any of the Xen suppport, so I'll probably just make it refuse that
configuration on older kernels.
¹ https://lore.kernel.org/qemu-devel/aaef9961d210ac1873153bf3cf01d984708744fc.camel@infradead.org/
David Woodhouse (18):
hw/xen: Add evtchn operations to allow redirection to internal emulation
hw/xen: Add emulated evtchn ops
hw/xen: Add gnttab operations to allow redirection to internal emulation
hw/xen: Pass grant ref to gnttab unmap
hw/xen: Add foreignmem operations to allow redirection to internal emulation
hw/xen: Move xenstore_store_pv_console_info to xen_console.c
hw/xen: Use XEN_PAGE_SIZE in PV backend drivers
hw/xen: Rename xen_common.h to xen_native.h
hw/xen: Build PV backend drivers for XENFV_MACHINE
hw/xen: Map guest XENSTORE_PFN grant in emulated Xenstore
hw/xen: Add backend implementation of grant table operations
hw/xen: Implement soft reset for emulated gnttab
hw/xen: Remove old version of Xen headers
i386/xen: Initialize XenBus and legacy backends from pc_init1()
i386/xen: Implement HYPERVISOR_physdev_op
hw/xen: Implement emulated PIRQ hypercall support
hw/xen: Support GSI mapping to PIRQ
hw/xen: Support MSI mapping to PIRQ
Paul Durrant (1):
hw/xen: Add xenstore operations to allow redirection to internal emulation
accel/xen/xen-all.c | 69 +-
hw/9pfs/meson.build | 2 +-
hw/9pfs/xen-9p-backend.c | 32 +-
hw/9pfs/xen-9pfs.h | 4 +-
hw/block/dataplane/meson.build | 2 +-
hw/block/dataplane/xen-block.c | 12 +-
hw/block/meson.build | 2 +-
hw/block/xen-block.c | 1 -
hw/block/xen_blkif.h | 5 +-
hw/char/meson.build | 2 +-
hw/char/xen_console.c | 59 +-
hw/display/meson.build | 2 +-
hw/display/xenfb.c | 38 +-
hw/i386/kvm/trace-events | 5 +
hw/i386/kvm/trace.h | 1 +
hw/i386/kvm/xen-stubs.c | 15 +
hw/i386/kvm/xen_evtchn.c | 596 ++++++++++++++-
hw/i386/kvm/xen_evtchn.h | 23 +
hw/i386/kvm/xen_gnttab.c | 320 +++++++-
hw/i386/kvm/xen_gnttab.h | 1 +
hw/i386/kvm/xen_xenstore.c | 13 +-
hw/i386/pc_piix.c | 17 +
hw/i386/x86.c | 16 +
hw/i386/xen/xen-hvm.c | 45 +-
hw/i386/xen/xen-mapcache.c | 2 +-
hw/i386/xen/xen_platform.c | 7 +-
hw/net/xen_nic.c | 27 +-
hw/pci/msi.c | 11 +
hw/pci/msix.c | 7 +
hw/pci/pci.c | 17 +
hw/usb/meson.build | 2 +-
hw/usb/xen-usb.c | 31 +-
hw/xen/meson.build | 6 +-
hw/xen/trace-events | 2 +-
hw/xen/xen-bus-helper.c | 61 +-
hw/xen/xen-bus.c | 394 ++--------
hw/xen/xen-legacy-backend.c | 256 ++-----
hw/xen/xen-operations.c | 487 ++++++++++++
hw/xen/xen_devconfig.c | 4 +-
hw/xen/xen_pt.c | 2 +-
hw/xen/xen_pt.h | 2 +-
hw/xen/xen_pt_config_init.c | 2 +-
hw/xen/xen_pt_graphics.c | 1 -
hw/xen/xen_pt_msi.c | 4 +-
hw/xen/xen_pvdev.c | 63 +-
include/hw/pci/msi.h | 1 +
include/hw/xen/interface/grant_table.h | 36 -
include/hw/xen/interface/io/blkif.h | 712 -----------------
include/hw/xen/interface/io/console.h | 46 --
include/hw/xen/interface/io/fbif.h | 156 ----
include/hw/xen/interface/io/kbdif.h | 566 --------------
include/hw/xen/interface/io/netif.h | 1010 -------------------------
include/hw/xen/interface/io/protocols.h | 42 -
include/hw/xen/interface/io/ring.h | 474 ------------
include/hw/xen/interface/io/usbif.h | 254 -------
include/hw/xen/interface/io/xenbus.h | 70 --
include/hw/xen/xen-bus-helper.h | 25 +-
include/hw/xen/xen-bus.h | 21 +-
include/hw/xen/xen-legacy-backend.h | 24 +-
include/hw/xen/xen.h | 24 +-
include/hw/xen/xen_backend_ops.h | 393 ++++++++++
include/hw/xen/{xen_common.h => xen_native.h} | 75 +-
include/hw/xen/xen_pvdev.h | 6 +-
meson.build | 1 +
softmmu/globals.c | 4 +
target/i386/kvm/kvm.c | 12 +-
target/i386/kvm/kvm_i386.h | 2 +
target/i386/kvm/xen-compat.h | 19 +
target/i386/kvm/xen-emu.c | 141 +++-
69 files changed, 2491 insertions(+), 4293 deletions(-)