From: Paul Durrant <xadimgnik@gmail.com>
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Joao Martins <joao.m.martins@oracle.com>,
Ankur Arora <ankur.a.arora@oracle.com>,
Stefano Stabellini <sstabellini@kernel.org>,
vikram.garhwal@amd.com,
Anthony Perard <anthony.perard@citrix.com>,
xen-devel@lists.xenproject.org,
Juan Quintela <quintela@redhat.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>
Subject: Re: [PATCH v2 00/27] Enable PV backends with Xen/KVM emulation
Date: Tue, 7 Mar 2023 17:57:29 +0000 [thread overview]
Message-ID: <007876ac-9f68-756b-3f86-db2f67886558@xen.org> (raw)
In-Reply-To: <20230307171750.2293175-1-dwmw2@infradead.org>
On 07/03/2023 17:17, David Woodhouse wrote:
> Following on from the basic platform support which has already been
> merged, here's phase 2 which wires up the XenBus and PV back ends.
>
> It starts with a basic single-tenant internal implementation of a
> XenStore, with a copy-on-write tree, watches, transactions, quotas.
>
> Then we introduce operations tables for the grant table, event channel,
> foreignmen and xenstore operations so that in addition to using the Xen
> libraries for those, QEMU can use its internal emulated versions.
>
> A little bit of cleaning up of header files, and we can enable the build
> of xen-bus in the CONFIG_XEN_EMU build, and run a Xen guest with an
> actual PV disk...
>
> qemu-system-x86_64 -serial mon:stdio -M q35 -display none -m 1G -smp 2 \
> -accel kvm,xen-version=0x4000e,kernel-irqchip=split \
> -kernel bzImage -append "console=ttyS0 root=/dev/xvda1 selinux=0" \
> -drive file=/var/lib/libvirt/images/fedora28.qcow2,if=none,id=disk \
> -device xen-disk,drive=disk,vdev=xvda
>
> The main thing that isn't working here is migration. I've implemented it
> for the internal xenstore and the unit tests exercise it, but the
> existing PV back ends don't support it, perhaps partly because support
> for guest transparent live migration support isn't upstream in Xen yet.
> So the disk doesn't come back correctly after migration. I'm content
> with that for 8.0 though, and we just mark the emulated XenStore device
> as unmigratable to prevent users from trying.
>
> The other pre-existing constraint is that only the block back end has
> yet been ported to the "new" XenBus infrastructure, and is actually
> capable of creating its own backend nodes. Again, I can live with
> that for 8.0. Maybe this will motivate us to finally get round to
> converting the rest off XenLegacyBackend and killing it.
>
> We also don't have a simple way to perform grant mapping of multiple
> guest pages to contiguous addresses, as we can under real Xen. So we
> don't advertise max-ring-page-order for xen-disk in the emulated mode.
> Fixing that — if we actually want to — would probably require mapping
> RAM from an actual backing store object, so that it can be mapped again
> at a different location for the PV back end to see.
>
> v2: https://git.infradead.org/users/dwmw2/qemu.git/shortlog/refs/heads/xenfv-2
>
> • Full set of reviewed-by tags from Paul (and associated minor fixes).
>
> • Disable migration for emulated XenStore device.
>
> • Update docs and add MAINTAINERS entry.
>
> v1: https://lore.kernel.org/qemu-devel/20230302153435.1170111-1-dwmw2@infradead.org/
> https://git.infradead.org/users/dwmw2/qemu.git/shortlog/refs/heads/xenfv-1
>
> David Woodhouse (23):
> hw/xen: Add xenstore wire implementation and implementation stubs
> hw/xen: Add basic XenStore tree walk and write/read/directory support
> hw/xen: Implement XenStore watches
> hw/xen: Implement XenStore transactions
> hw/xen: Watches on XenStore transactions
> hw/xen: Implement core serialize/deserialize methods for xenstore_impl
> hw/xen: Add evtchn operations to allow redirection to internal emulation
> hw/xen: Add gnttab operations to allow redirection to internal emulation
> hw/xen: Pass grant ref to gnttab unmap operation
> 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 CONFIG_XEN_BUS
> hw/xen: Only advertise ring-page-order for xen-block if gnttab supports it
> hw/xen: Hook up emulated implementation for event channel operations
> hw/xen: Add emulated implementation of grant table operations
> hw/xen: Add emulated implementation of XenStore operations
> hw/xen: Map guest XENSTORE_PFN grant in emulated Xenstore
> hw/xen: Implement soft reset for emulated gnttab
> i386/xen: Initialize Xen backends from pc_basic_device_init() for emulation
> MAINTAINERS: Add entry for Xen on KVM emulation
> docs: Update Xen-on-KVM documentation for PV disk support
>
> Paul Durrant (4):
> hw/xen: Implement XenStore permissions
> hw/xen: Create initial XenStore nodes
> hw/xen: Add xenstore operations to allow redirection to internal emulation
> hw/xen: Avoid crash when backend watch fires too early
>
> MAINTAINERS | 9 +
> accel/xen/xen-all.c | 69 +-
> docs/system/i386/xen.rst | 30 +-
> hw/9pfs/meson.build | 2 +-
> hw/9pfs/xen-9p-backend.c | 32 +-
> hw/block/dataplane/meson.build | 2 +-
> hw/block/dataplane/xen-block.c | 12 +-
> hw/block/meson.build | 2 +-
> hw/block/xen-block.c | 12 +-
> hw/char/meson.build | 2 +-
> hw/char/xen_console.c | 57 +-
> hw/display/meson.build | 2 +-
> hw/display/xenfb.c | 32 +-
> hw/i386/kvm/meson.build | 1 +
> hw/i386/kvm/trace-events | 15 +
> hw/i386/kvm/xen_evtchn.c | 15 +
> hw/i386/kvm/xen_gnttab.c | 325 ++++-
> hw/i386/kvm/xen_gnttab.h | 1 +
> hw/i386/kvm/xen_xenstore.c | 1251 +++++++++++++++-
> hw/i386/kvm/xenstore_impl.c | 1927 +++++++++++++++++++++++++
> hw/i386/kvm/xenstore_impl.h | 63 +
> hw/i386/pc.c | 7 +
> hw/i386/pc_piix.c | 4 +-
> hw/i386/xen/xen-hvm.c | 38 +-
> hw/i386/xen/xen-mapcache.c | 2 +-
> hw/i386/xen/xen_platform.c | 7 +-
> hw/net/xen_nic.c | 25 +-
> hw/usb/meson.build | 2 +-
> hw/usb/xen-usb.c | 29 +-
> hw/xen/meson.build | 6 +-
> hw/xen/trace-events | 2 +-
> hw/xen/xen-bus-helper.c | 62 +-
> hw/xen/xen-bus.c | 411 +-----
> hw/xen/xen-legacy-backend.c | 254 +---
> hw/xen/xen-operations.c | 478 ++++++
> 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/xen-bus-helper.h | 26 +-
> 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 | 408 ++++++
> 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 +
> tests/unit/meson.build | 1 +
> tests/unit/test-xs-node.c | 871 +++++++++++
> 53 files changed, 5804 insertions(+), 927 deletions(-)
>
I think the series is good to go now so time to send a PR.
Cheers,
Paul
next prev parent reply other threads:[~2023-03-07 17:57 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-07 17:17 [PATCH v2 00/27] Enable PV backends with Xen/KVM emulation David Woodhouse
2023-03-07 17:17 ` [PATCH v2 01/27] hw/xen: Add xenstore wire implementation and implementation stubs David Woodhouse
2023-03-07 17:17 ` [PATCH v2 02/27] hw/xen: Add basic XenStore tree walk and write/read/directory support David Woodhouse
2023-03-07 17:17 ` [PATCH v2 03/27] hw/xen: Implement XenStore watches David Woodhouse
2023-03-07 17:17 ` [PATCH v2 04/27] hw/xen: Implement XenStore transactions David Woodhouse
2023-03-07 17:17 ` [PATCH v2 05/27] hw/xen: Watches on " David Woodhouse
2023-03-07 17:17 ` [PATCH v2 06/27] hw/xen: Implement XenStore permissions David Woodhouse
2023-03-07 17:17 ` [PATCH v2 07/27] hw/xen: Implement core serialize/deserialize methods for xenstore_impl David Woodhouse
2023-03-07 17:17 ` [PATCH v2 08/27] hw/xen: Create initial XenStore nodes David Woodhouse
2023-03-07 17:17 ` [PATCH v2 09/27] hw/xen: Add evtchn operations to allow redirection to internal emulation David Woodhouse
2023-03-23 10:29 ` Anthony PERARD via
2023-03-23 10:42 ` David Woodhouse
2023-03-23 10:57 ` [PATCH] hw/xenpv: Initialize Xen backend operations David Woodhouse
2023-03-23 13:26 ` Paul Durrant
2023-03-24 14:51 ` Anthony PERARD via
2023-03-07 17:17 ` [PATCH v2 10/27] hw/xen: Add gnttab operations to allow redirection to internal emulation David Woodhouse
2023-03-07 17:17 ` [PATCH v2 11/27] hw/xen: Pass grant ref to gnttab unmap operation David Woodhouse
2023-03-07 17:17 ` [PATCH v2 12/27] hw/xen: Add foreignmem operations to allow redirection to internal emulation David Woodhouse
2023-03-07 17:17 ` [PATCH v2 13/27] hw/xen: Add xenstore " David Woodhouse
2023-03-07 17:17 ` [PATCH v2 14/27] hw/xen: Move xenstore_store_pv_console_info to xen_console.c David Woodhouse
2023-03-07 17:17 ` [PATCH v2 15/27] hw/xen: Use XEN_PAGE_SIZE in PV backend drivers David Woodhouse
2023-03-07 17:17 ` [PATCH v2 16/27] hw/xen: Rename xen_common.h to xen_native.h David Woodhouse
2023-03-07 17:17 ` [PATCH v2 17/27] hw/xen: Build PV backend drivers for CONFIG_XEN_BUS David Woodhouse
2023-03-07 17:17 ` [PATCH v2 18/27] hw/xen: Avoid crash when backend watch fires too early David Woodhouse
2023-03-07 17:17 ` [PATCH v2 19/27] hw/xen: Only advertise ring-page-order for xen-block if gnttab supports it David Woodhouse
2023-03-07 17:17 ` [PATCH v2 20/27] hw/xen: Hook up emulated implementation for event channel operations David Woodhouse
2023-03-07 17:17 ` [PATCH v2 21/27] hw/xen: Add emulated implementation of grant table operations David Woodhouse
2023-03-07 17:17 ` [PATCH v2 22/27] hw/xen: Add emulated implementation of XenStore operations David Woodhouse
2023-03-07 17:17 ` [PATCH v2 23/27] hw/xen: Map guest XENSTORE_PFN grant in emulated Xenstore David Woodhouse
2023-03-07 17:17 ` [PATCH v2 24/27] hw/xen: Implement soft reset for emulated gnttab David Woodhouse
2023-03-07 17:17 ` [PATCH v2 25/27] i386/xen: Initialize Xen backends from pc_basic_device_init() for emulation David Woodhouse
2023-03-07 17:56 ` Paul Durrant
2023-03-07 17:17 ` [PATCH v2 26/27] MAINTAINERS: Add entry for Xen on KVM emulation David Woodhouse
2023-03-07 17:17 ` [PATCH v2 27/27] docs: Update Xen-on-KVM documentation for PV disk support David Woodhouse
2023-03-07 17:57 ` Paul Durrant [this message]
2023-03-07 18:27 ` [PATCH v2 00/27] Enable PV backends with Xen/KVM emulation 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=007876ac-9f68-756b-3f86-db2f67886558@xen.org \
--to=xadimgnik@gmail.com \
--cc=ankur.a.arora@oracle.com \
--cc=anthony.perard@citrix.com \
--cc=dgilbert@redhat.com \
--cc=dwmw2@infradead.org \
--cc=joao.m.martins@oracle.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=sstabellini@kernel.org \
--cc=vikram.garhwal@amd.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).