qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v11bis 00/26] Emulated XenStore and PV backend support
@ 2023-02-16  9:44 David Woodhouse
  2023-02-16  9:44 ` [RFC PATCH v11bis 01/26] hw/xen: Add xenstore wire implementation and implementation stubs David Woodhouse
                   ` (26 more replies)
  0 siblings, 27 replies; 31+ messages in thread
From: David Woodhouse @ 2023-02-16  9:44 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Paolo Bonzini, Paul Durrant, Joao Martins, Ankur Arora,
	Philippe Mathieu-Daudé, Thomas Huth, Alex Bennée,
	Juan Quintela, Dr . David Alan Gilbert, Claudio Fontana,
	Julien Grall, Michael S. Tsirkin, Marcel Apfelbaum, armbru,
	Stefano Stabellini, vikram.garhwal

The non-RFC patch submisson¹ is just the basic platform support for Xen
on KVM. This RFC series is phase 2, adding an internal XenStore and
hooking up the PV back end drivers to that and the emulated grant tables
and event channels.

With this, we can boot a Xen guest with PV disk, under KVM. Full support
for migration isn't there yet because it's actually missing in the PV
back end drivers in the first place (perhaps because upstream Xen doesn't
yet have guest transparent live migration support anyway). I'm assuming
that when the first round is merged and we drop the [RFC] from this set,
that won't be a showstopper for now?

I'd be particularly interested in opinions on the way I implemented
serialization for the XenStore, by creating a GByteArray and then dumping
it with VMSTATE_VARRAY_UINT32_ALLOC().

I may eventually attempt to make xs_node_walk() not actually recursive,
if I can do so without my brain exploding. Since the first time the
XenStore code was showed, I've stopped the XsNode from being an actual
Object; that just made it larger for almost no benefit. 

¹ https://lore.kernel.org/qemu-devel/20230216062444.2129371-1-dwmw2@infradead.org/

David Woodhouse (22):
      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
      hw/xen: Subsume xen_be_register_common() into xen_be_init()
      i386/xen: Initialize Xen backends from pc_basic_device_init() for emulation

Paul Durrant (4):
      xenstore perms WIP
      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

 accel/xen/xen-all.c                           |   69 +-
 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                      |  320 ++++-
 hw/i386/kvm/xen_gnttab.h                      |    1 +
 hw/i386/kvm/xen_xenstore.c                    | 1248 +++++++++++++++++-
 hw/i386/kvm/xenstore_impl.c                   | 1754 +++++++++++++++++++++++++
 hw/i386/kvm/xenstore_impl.h                   |   63 +
 hw/i386/pc.c                                  |    7 +
 hw/i386/pc_piix.c                             |    4 +-
 hw/i386/xen/xen-hvm.c                         |    8 +-
 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                       |   61 +-
 hw/xen/xen-bus.c                              |  408 +-----
 hw/xen/xen-hvm-common.c                       |   45 +-
 hw/xen/xen-legacy-backend.c                   |  307 ++---
 hw/xen/xen-mapcache.c                         |    2 +-
 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 +-
 hw/xenpv/xen_machine_pv.c                     |    6 +-
 include/hw/xen/xen-bus-helper.h               |   25 +-
 include/hw/xen/xen-bus.h                      |   21 +-
 include/hw/xen/xen-hvm-common.h               |    3 +-
 include/hw/xen/xen-legacy-backend.h           |   27 +-
 include/hw/xen/xen.h                          |   24 +-
 include/hw/xen/xen_backend_ops.h              |  399 ++++++
 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                     |  717 ++++++++++
 54 files changed, 5454 insertions(+), 978 deletions(-)




^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2023-02-16 15:34 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-16  9:44 [RFC PATCH v11bis 00/26] Emulated XenStore and PV backend support David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 01/26] hw/xen: Add xenstore wire implementation and implementation stubs David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 02/26] hw/xen: Add basic XenStore tree walk and write/read/directory support David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 03/26] hw/xen: Implement XenStore watches David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 04/26] hw/xen: Implement XenStore transactions David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 05/26] hw/xen: Watches on " David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 06/26] xenstore perms WIP David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 07/26] hw/xen: Implement core serialize/deserialize methods for xenstore_impl David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 08/26] hw/xen: Create initial XenStore nodes David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 09/26] hw/xen: Add evtchn operations to allow redirection to internal emulation David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 10/26] hw/xen: Add gnttab " David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 11/26] hw/xen: Pass grant ref to gnttab unmap operation David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 12/26] hw/xen: Add foreignmem operations to allow redirection to internal emulation David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 13/26] hw/xen: Add xenstore " David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 14/26] hw/xen: Move xenstore_store_pv_console_info to xen_console.c David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 15/26] hw/xen: Use XEN_PAGE_SIZE in PV backend drivers David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 16/26] hw/xen: Rename xen_common.h to xen_native.h David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 17/26] hw/xen: Build PV backend drivers for CONFIG_XEN_BUS David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 18/26] hw/xen: Avoid crash when backend watch fires too early David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 19/26] hw/xen: Only advertise ring-page-order for xen-block if gnttab supports it David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 20/26] hw/xen: Hook up emulated implementation for event channel operations David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 21/26] hw/xen: Add emulated implementation of grant table operations David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 22/26] hw/xen: Add emulated implementation of XenStore operations David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 23/26] hw/xen: Map guest XENSTORE_PFN grant in emulated Xenstore David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 24/26] hw/xen: Implement soft reset for emulated gnttab David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 25/26] hw/xen: Subsume xen_be_register_common() into xen_be_init() David Woodhouse
2023-02-16  9:44 ` [RFC PATCH v11bis 26/26] i386/xen: Initialize Xen backends from pc_basic_device_init() for emulation David Woodhouse
2023-02-16 10:49 ` [RFC PATCH v11bis 00/26] Emulated XenStore and PV backend support Juan Quintela
2023-02-16 13:51   ` David Woodhouse
2023-02-16 14:02     ` Juan Quintela
2023-02-16 15:33       ` David Woodhouse

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).