This is a very early preview of phase 2, in which we make the PV backend drivers build. Mostly by providing operations tables that can be backed either by the true Xen toolstack libraries, or by the internal emulated versions. But also a bunch of untangling of headers to keep things sane.
Some parts of it are relatively straightforward; others less so. In particular, it looks really hard to provide a contiguous virtual mapping of multiple potentially discontiguous pages granted by the guest. To fix that we might actually need the guest memory blocks to be backed by real files (perhaps deleted or shmem) in order that they can be mapped again in at a different virtual address. So for now we'll limit the back ends to mapping a single grant ref at a time. https://git.infradead.org/users/dwmw2/qemu.git/shortlog/refs/heads/xenfv-kvm-backends-1 David Woodhouse (14): 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() 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/xen_evtchn.c | 15 + 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/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/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/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 +- softmmu/globals.c | 4 + target/i386/kvm/xen-emu.c | 5 + 56 files changed, 1651 insertions(+), 4286 deletions(-)