From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
"Hanna Reitz" <hreitz@redhat.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Paul Durrant" <paul@xen.org>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Jason Wang" <jasowang@redhat.com>,
"Marcelo Tosatti" <mtosatti@redhat.com>,
qemu-block@nongnu.org, xen-devel@lists.xenproject.org,
kvm@vger.kernel.org, "Bernhard Beschow" <shentey@gmail.com>,
"Joel Upham" <jupham125@gmail.com>
Subject: [PATCH v3 00/28] Get Xen PV shim running in QEMU, add net & console
Date: Wed, 25 Oct 2023 15:50:14 +0100 [thread overview]
Message-ID: <20231025145042.627381-1-dwmw2@infradead.org> (raw)
Round up a handful of outstanding fixes, add console support and fix up
per-vCPU upcall vector support (which was previously untested), and that
allows us to boot PV guests using the Xen "PV shim".
Having fixed up the per-vCPU upcall vector support, pull in slightly
newer Xen headers just for the definition of the CPUID bit that lets
us tell the Linux (6.0+) kernel to use it. That'll help with testing.
v2 of the series added network support for emulated Xen guests by
converting the xen_nic driver to the "new" XenDevice model. That had
been on the TODO list for a while, and having done the console it made
sense to do network too while I still remembered it all.
But then there was a bit more breakage to deal with. Even before the
conversion to XenDevice, the xen_nic support was already hosed for
actual Xen PV guests (-m xenfv) because it never actually managed to
connect the Xen network device to a netdev. And net_cleanup() was
freeing the NICs from underneath the device models which own them, which
upsets the devices that actually do their own cleanup.
Simplify the user experience for "-device file=IMAGE,if=xen" because
that had been offending me for a while, and now I knew how to do that
too.
Update the documentation, and take the opportunity to fix up that bit
about unplug not working on Q35, because I *also* worked out how to do
that when heckling Joel's attempt to do so.
v3 of the series includes more cleanups to the -nic option handling,
allowing me to ditch some of the ugly special cases for registering
the Xen network device for xenfv vs. pc platforms, and replace it with
a simple "register all NICs on this bus" which PCI can use too. That
was seen in a 45-patch series all of its own, but now I've pulled in
just the basic part that's needed for Xen support, and the remaining
bombing run on all the platforms can wait; I won't spam the list with
the rest of that again just yet.
David Woodhouse (28):
i386/xen: Don't advertise XENFEAT_supervisor_mode_kernel
i386/xen: fix per-vCPU upcall vector for Xen emulation
hw/xen: select kernel mode for per-vCPU event channel upcall vector
hw/xen: don't clear map_track[] in xen_gnttab_reset()
hw/xen: fix XenStore watch delivery to guest
hw/xen: take iothread mutex in xen_evtchn_reset_op()
hw/xen: use correct default protocol for xen-block on x86
i386/xen: Ignore VCPU_SSHOTTMR_future flag in set_singleshot_timer()
hw/xen: Clean up event channel 'type_val' handling to use union
include: update Xen public headers to Xen 4.17.2 release
i386/xen: advertise XEN_HVM_CPUID_UPCALL_VECTOR in CPUID
hw/xen: populate store frontend nodes with XenStore PFN/port
hw/xen: automatically assign device index to block devices
hw/xen: add get_frontend_path() method to XenDeviceClass
hw/xen: do not repeatedly try to create a failing backend device
hw/xen: update Xen console to XenDevice model
hw/xen: add support for Xen primary console in emulated mode
hw/xen: only remove peers of PCI NICs on unplug
hw/xen: update Xen PV NIC to XenDevice model
net: do not delete nics in net_cleanup()
xen-platform: unplug AHCI disks
net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
net: report list of available models according to platform
net: add qemu_create_nic_bus_devices()
hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
docs: update Xen-on-KVM documentation
MAINTAINERS | 2 +-
blockdev.c | 15 +-
docs/system/i386/xen.rst | 100 +++--
hw/block/xen-block.c | 44 +-
hw/char/trace-events | 8 +
hw/char/xen_console.c | 572 +++++++++++++++++++------
hw/i386/kvm/meson.build | 1 +
hw/i386/kvm/trace-events | 2 +
hw/i386/kvm/xen-stubs.c | 8 +
hw/i386/kvm/xen_evtchn.c | 158 ++++---
hw/i386/kvm/xen_gnttab.c | 7 +-
hw/i386/kvm/xen_primary_console.c | 193 +++++++++
hw/i386/kvm/xen_primary_console.h | 23 +
hw/i386/kvm/xen_xenstore.c | 31 +-
hw/i386/pc.c | 21 +-
hw/i386/xen/xen_platform.c | 77 ++--
hw/net/meson.build | 2 +-
hw/net/trace-events | 11 +
hw/net/xen_nic.c | 484 ++++++++++++++++-----
hw/pci/pci.c | 45 ++
hw/xen/xen-backend.c | 27 +-
hw/xen/xen-bus.c | 23 +-
hw/xen/xen-legacy-backend.c | 1 -
hw/xen/xen_devconfig.c | 53 ---
hw/xenpv/xen_machine_pv.c | 19 -
include/hw/net/ne2000-isa.h | 2 -
include/hw/pci/pci.h | 4 +-
include/hw/xen/interface/arch-arm.h | 37 +-
include/hw/xen/interface/arch-x86/cpuid.h | 31 +-
include/hw/xen/interface/arch-x86/xen-x86_32.h | 19 +-
include/hw/xen/interface/arch-x86/xen-x86_64.h | 19 +-
include/hw/xen/interface/arch-x86/xen.h | 26 +-
include/hw/xen/interface/event_channel.h | 19 +-
include/hw/xen/interface/features.h | 19 +-
include/hw/xen/interface/grant_table.h | 19 +-
include/hw/xen/interface/hvm/hvm_op.h | 19 +-
include/hw/xen/interface/hvm/params.h | 19 +-
include/hw/xen/interface/io/blkif.h | 27 +-
include/hw/xen/interface/io/console.h | 19 +-
include/hw/xen/interface/io/fbif.h | 19 +-
include/hw/xen/interface/io/kbdif.h | 19 +-
include/hw/xen/interface/io/netif.h | 25 +-
include/hw/xen/interface/io/protocols.h | 19 +-
include/hw/xen/interface/io/ring.h | 49 +--
include/hw/xen/interface/io/usbif.h | 19 +-
include/hw/xen/interface/io/xenbus.h | 19 +-
include/hw/xen/interface/io/xs_wire.h | 36 +-
include/hw/xen/interface/memory.h | 30 +-
include/hw/xen/interface/physdev.h | 23 +-
include/hw/xen/interface/sched.h | 19 +-
include/hw/xen/interface/trace.h | 19 +-
include/hw/xen/interface/vcpu.h | 19 +-
include/hw/xen/interface/version.h | 19 +-
include/hw/xen/interface/xen-compat.h | 19 +-
include/hw/xen/interface/xen.h | 19 +-
include/hw/xen/xen-backend.h | 1 +
include/hw/xen/xen-bus.h | 3 +
include/hw/xen/xen-legacy-backend.h | 2 -
include/net/net.h | 10 +-
include/sysemu/kvm_xen.h | 1 +
net/net.c | 226 +++++++++-
target/i386/kvm/kvm.c | 4 +
target/i386/kvm/xen-emu.c | 59 ++-
63 files changed, 1851 insertions(+), 1033 deletions(-)
next reply other threads:[~2023-10-25 14:51 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-25 14:50 David Woodhouse [this message]
2023-10-25 14:50 ` [PATCH v3 01/28] i386/xen: Don't advertise XENFEAT_supervisor_mode_kernel David Woodhouse
2023-10-25 14:50 ` [PATCH v3 02/28] i386/xen: fix per-vCPU upcall vector for Xen emulation David Woodhouse
2023-10-25 14:50 ` [PATCH v3 03/28] hw/xen: select kernel mode for per-vCPU event channel upcall vector David Woodhouse
2023-10-25 14:50 ` [PATCH v3 04/28] hw/xen: don't clear map_track[] in xen_gnttab_reset() David Woodhouse
2023-10-25 14:50 ` [PATCH v3 05/28] hw/xen: fix XenStore watch delivery to guest David Woodhouse
2023-10-27 7:15 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 06/28] hw/xen: take iothread mutex in xen_evtchn_reset_op() David Woodhouse
2023-10-27 7:20 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 07/28] hw/xen: use correct default protocol for xen-block on x86 David Woodhouse
2023-10-27 7:22 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 08/28] i386/xen: Ignore VCPU_SSHOTTMR_future flag in set_singleshot_timer() David Woodhouse
2023-10-27 7:23 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 09/28] hw/xen: Clean up event channel 'type_val' handling to use union David Woodhouse
2023-10-25 14:50 ` [PATCH v3 10/28] include: update Xen public headers to Xen 4.17.2 release David Woodhouse
2023-10-25 14:50 ` [PATCH v3 11/28] i386/xen: advertise XEN_HVM_CPUID_UPCALL_VECTOR in CPUID David Woodhouse
2023-10-25 14:50 ` [PATCH v3 12/28] hw/xen: populate store frontend nodes with XenStore PFN/port David Woodhouse
2023-10-25 14:50 ` [PATCH v3 13/28] hw/xen: automatically assign device index to block devices David Woodhouse
2023-10-27 7:30 ` Durrant, Paul
2023-10-27 8:45 ` David Woodhouse
2023-10-27 9:01 ` Durrant, Paul
2023-10-27 10:25 ` David Woodhouse
2023-10-27 10:32 ` Durrant, Paul
2023-10-27 12:02 ` David Woodhouse
2023-10-25 14:50 ` [PATCH v3 14/28] hw/xen: add get_frontend_path() method to XenDeviceClass David Woodhouse
2023-10-27 7:31 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 15/28] hw/xen: do not repeatedly try to create a failing backend device David Woodhouse
2023-10-25 14:50 ` [PATCH v3 16/28] hw/xen: update Xen console to XenDevice model David Woodhouse
2023-10-25 14:50 ` [PATCH v3 17/28] hw/xen: add support for Xen primary console in emulated mode David Woodhouse
2023-10-27 7:44 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 18/28] hw/xen: only remove peers of PCI NICs on unplug David Woodhouse
2023-10-27 8:29 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 19/28] hw/xen: update Xen PV NIC to XenDevice model David Woodhouse
2023-10-27 8:42 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 20/28] net: do not delete nics in net_cleanup() David Woodhouse
2023-10-27 8:44 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 21/28] xen-platform: unplug AHCI disks David Woodhouse
2023-10-27 9:08 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 22/28] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info() David Woodhouse
2023-10-25 14:50 ` [PATCH v3 22/28] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() David Woodhouse
2023-10-27 9:25 ` [PATCH v3 22/28] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info() Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 23/28] net: report list of available models according to platform David Woodhouse
2023-10-27 9:31 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 24/28] net: add qemu_create_nic_bus_devices() David Woodhouse
2023-10-27 9:42 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 25/28] hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot() David Woodhouse
2023-10-27 9:46 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 26/28] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
2023-10-27 9:48 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 27/28] hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs David Woodhouse
2023-10-27 9:52 ` Durrant, Paul
2023-10-25 14:50 ` [PATCH v3 28/28] docs: update Xen-on-KVM documentation David Woodhouse
2023-10-25 18:20 ` Eric Blake
2023-10-25 18:26 ` David Woodhouse
2023-10-25 18:56 ` Andrew Cooper
2023-10-25 19:02 ` David Woodhouse
2023-10-26 8:26 ` Kevin Wolf
2023-10-26 9:25 ` David Woodhouse
2023-10-26 16:25 ` David Woodhouse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231025145042.627381-1-dwmw2@infradead.org \
--to=dwmw2@infradead.org \
--cc=anthony.perard@citrix.com \
--cc=eduardo@habkost.net \
--cc=hreitz@redhat.com \
--cc=jasowang@redhat.com \
--cc=jupham125@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=kwolf@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=shentey@gmail.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.