[PULL 00/27] Enable PV backends with Xen/KVM emulation

David Woodhouse posted 27 patches 1 year, 1 month ago
There is a newer version of this series
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(-)
create mode 100644 hw/i386/kvm/xenstore_impl.c
create mode 100644 hw/i386/kvm/xenstore_impl.h
create mode 100644 hw/xen/xen-operations.c
create mode 100644 include/hw/xen/xen_backend_ops.h
rename include/hw/xen/{xen_common.h => xen_native.h} (89%)
create mode 100644 tests/unit/test-xs-node.c
[PULL 00/27] Enable PV backends with Xen/KVM emulation
Posted by David Woodhouse 1 year, 1 month ago
The following changes since commit 9832009d9dd2386664c15cc70f6e6bfe062be8bd:

  Merge tag 'pull-riscv-to-apply-20230306' of https://gitlab.com/palmer-dabbelt/qemu into staging (2023-03-07 12:53:00 +0000)

are available in the Git repository at:

  git://git.infradead.org/users/dwmw2/qemu.git refs/tags/xenfv-2 

for you to fetch changes up to 154eac37190c4d80d29b09c226abd899e397530f:

  docs: Update Xen-on-KVM documentation for PV disk support (2023-03-07 17:04:30 +0000)


Tested-by: Paul Durrant <paul@xen.org>
... on real Xen (master branch, 4.18) with a Debian guest.

----------------------------------------------------------------
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(-)
 create mode 100644 hw/i386/kvm/xenstore_impl.c
 create mode 100644 hw/i386/kvm/xenstore_impl.h
 create mode 100644 hw/xen/xen-operations.c
 create mode 100644 include/hw/xen/xen_backend_ops.h
 rename include/hw/xen/{xen_common.h => xen_native.h} (89%)
 create mode 100644 tests/unit/test-xs-node.c
Re: [PULL 00/27] Enable PV backends with Xen/KVM emulation
Posted by Philippe Mathieu-Daudé 1 year, 1 month ago
Hi David,

On 7/3/23 19:26, David Woodhouse wrote:
> The following changes since commit 9832009d9dd2386664c15cc70f6e6bfe062be8bd:
> 
>    Merge tag 'pull-riscv-to-apply-20230306' of https://gitlab.com/palmer-dabbelt/qemu into staging (2023-03-07 12:53:00 +0000)
> 
> are available in the Git repository at:
> 
>    git://git.infradead.org/users/dwmw2/qemu.git refs/tags/xenfv-2
> 
> for you to fetch changes up to 154eac37190c4d80d29b09c226abd899e397530f:
> 
>    docs: Update Xen-on-KVM documentation for PV disk support (2023-03-07 17:04:30 +0000)
> 
> 
> Tested-by: Paul Durrant <paul@xen.org>
> ... on real Xen (master branch, 4.18) with a Debian guest.

This tag only appears in the cover letter, and is missing in each patch.
It would have been acceptable if it were in the PR tag, but
the tag (which for some reason isn't displayed in your cover letter)
is simply "PV back end support for emulated Xen".

You can fetch a series with tag applied with b4:
https://github.com/mricon/b4

You can post signed PR with easily with git-publish:
https://github.com/stefanha/git-publish

> ----------------------------------------------------------------
> 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
Re: [PULL 00/27] Enable PV backends with Xen/KVM emulation
Posted by David Woodhouse 1 year, 1 month ago
On Tue, 2023-03-07 at 21:20 +0100, Philippe Mathieu-Daudé wrote:
> 
> This tag only appears in the cover letter, and is missing in each patch.
> It would have been acceptable if it were in the PR tag, but
> the tag (which for some reason isn't displayed in your cover letter)
> is simply "PV back end support for emulated Xen".
> 
> You can fetch a series with tag applied with b4:
> https://github.com/mricon/b4
> 
> You can post signed PR with easily with git-publish:
> https://github.com/stefanha/git-publish

Indeed, while I knew that the testing had been done, I didn't actually
have that Tested-by: tag to cut and paste until after I'd pushed the
tree to gitlab for CI, and signed the tag.

But I realise that I can just update the tag, since it's signed and it
was only referenced by name. And nobody but you has looked yet so
nobody will notice... this one look better?

https://git.infradead.org/users/dwmw2/qemu.git/tag/refs/tags/xenfv-2
Re: [PULL 00/27] Enable PV backends with Xen/KVM emulation
Posted by Philippe Mathieu-Daudé 1 year, 1 month ago
On 7/3/23 23:34, David Woodhouse wrote:
> On Tue, 2023-03-07 at 21:20 +0100, Philippe Mathieu-Daudé wrote:
>>
>> This tag only appears in the cover letter, and is missing in each patch.
>> It would have been acceptable if it were in the PR tag, but
>> the tag (which for some reason isn't displayed in your cover letter)
>> is simply "PV back end support for emulated Xen".
>>
>> You can fetch a series with tag applied with b4:
>> https://github.com/mricon/b4
>>
>> You can post signed PR with easily with git-publish:
>> https://github.com/stefanha/git-publish
> 
> Indeed, while I knew that the testing had been done, I didn't actually
> have that Tested-by: tag to cut and paste until after I'd pushed the
> tree to gitlab for CI, and signed the tag.
> 
> But I realise that I can just update the tag, since it's signed and it
> was only referenced by name. And nobody but you has looked yet so
> nobody will notice... this one look better?
> 
> https://git.infradead.org/users/dwmw2/qemu.git/tag/refs/tags/xenfv-2

LGTM, thanks!

Re: [PULL 00/27] Enable PV backends with Xen/KVM emulation
Posted by Peter Maydell 1 year, 1 month ago
On Tue, 7 Mar 2023 at 18:27, David Woodhouse <dwmw2@infradead.org> wrote:
>
> The following changes since commit 9832009d9dd2386664c15cc70f6e6bfe062be8bd:
>
>   Merge tag 'pull-riscv-to-apply-20230306' of https://gitlab.com/palmer-dabbelt/qemu into staging (2023-03-07 12:53:00 +0000)
>
> are available in the Git repository at:
>
>   git://git.infradead.org/users/dwmw2/qemu.git refs/tags/xenfv-2
>
> for you to fetch changes up to 154eac37190c4d80d29b09c226abd899e397530f:
>
>   docs: Update Xen-on-KVM documentation for PV disk support (2023-03-07 17:04:30 +0000)
>
>
> Tested-by: Paul Durrant <paul@xen.org>
> ... on real Xen (master branch, 4.18) with a Debian guest.


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/8.0
for any user-visible changes.

-- PMM