[PATCH v10 00/14] vfio-user server in QEMU

Jagannathan Raman posted 14 patches 1 year, 11 months ago
There is a newer version of this series
configure                               |  17 +
meson.build                             |  23 +-
qapi/misc.json                          |  31 +
qapi/qom.json                           |  20 +-
include/exec/memory.h                   |   3 +
include/hw/pci/pci.h                    |  13 +
include/hw/qdev-core.h                  |  29 +
include/hw/remote/iommu.h               |  40 ++
include/hw/remote/machine.h             |   4 +
include/hw/remote/vfio-user-obj.h       |   6 +
hw/core/qdev.c                          |  24 +
hw/pci/msi.c                            |  16 +-
hw/pci/msix.c                           |  10 +-
hw/pci/pci.c                            |  13 +
hw/remote/iommu.c                       | 131 ++++
hw/remote/machine.c                     |  88 ++-
hw/remote/vfio-user-obj.c               | 914 ++++++++++++++++++++++++
softmmu/physmem.c                       |   4 +-
softmmu/qdev-monitor.c                  |   4 +
stubs/vfio-user-obj.c                   |   6 +
tests/qtest/fuzz/generic_fuzz.c         |   9 +-
.gitlab-ci.d/buildtest.yml              |   1 +
.gitmodules                             |   3 +
Kconfig.host                            |   4 +
MAINTAINERS                             |   5 +
hw/remote/Kconfig                       |   4 +
hw/remote/meson.build                   |   4 +
hw/remote/trace-events                  |  11 +
meson_options.txt                       |   2 +
stubs/meson.build                       |   1 +
subprojects/libvfio-user                |   1 +
tests/docker/dockerfiles/centos8.docker |   2 +
32 files changed, 1424 insertions(+), 19 deletions(-)
create mode 100644 include/hw/remote/iommu.h
create mode 100644 include/hw/remote/vfio-user-obj.h
create mode 100644 hw/remote/iommu.c
create mode 100644 hw/remote/vfio-user-obj.c
create mode 100644 stubs/vfio-user-obj.c
create mode 160000 subprojects/libvfio-user
[PATCH v10 00/14] vfio-user server in QEMU
Posted by Jagannathan Raman 1 year, 11 months ago
Hi,

This is v10 of the server side changes to enable vfio-user in QEMU.

Thank you for reviewing and sharing your feedback for the previous
revision. We have addressed your comments in this revision.

We have dropped the following patches in this series:
  - tests/avocado: Specify target VM argument to helper routines
  - configure: require cmake 3.19 or newer
  - vfio-user: avocado tests for vfio-user

We have also made the following changes:
  [PATCH v10 1/14] qdev: unplug blocker for devices
    - updated functions comments for unplug blockers in hw/qdev-core.h

  [PATCH v10 4/14] vfio-user: build library
    - uses meson build system to build libvfio-user library
    - dropped ubuntu CI build

  [PATCH v10 5/14] vfio-user: define vfio-user-server object
    - updated comments for VfioUserServerProperties in qapi/qom.json

  [PATCH v10 6/14] vfio-user: instantiate vfio-user context
    - added comments to vfu_object_init_ctx() explaining function contract

  [PATCH v10 8/14] vfio-user: run vfio-user context
    - vfu_object_ctx_run() asserts that VfuObject->device is not NULL
    - added a comment to vfu_object_ctx_run() explaining why
      VfuObject->device wouldn't be NULL

Thank you very much!

Jagannathan Raman (14):
  qdev: unplug blocker for devices
  remote/machine: add HotplugHandler for remote machine
  remote/machine: add vfio-user property
  vfio-user: build library
  vfio-user: define vfio-user-server object
  vfio-user: instantiate vfio-user context
  vfio-user: find and init PCI device
  vfio-user: run vfio-user context
  vfio-user: handle PCI config space accesses
  vfio-user: IOMMU support for remote device
  vfio-user: handle DMA mappings
  vfio-user: handle PCI BAR accesses
  vfio-user: handle device interrupts
  vfio-user: handle reset of remote device

 configure                               |  17 +
 meson.build                             |  23 +-
 qapi/misc.json                          |  31 +
 qapi/qom.json                           |  20 +-
 include/exec/memory.h                   |   3 +
 include/hw/pci/pci.h                    |  13 +
 include/hw/qdev-core.h                  |  29 +
 include/hw/remote/iommu.h               |  40 ++
 include/hw/remote/machine.h             |   4 +
 include/hw/remote/vfio-user-obj.h       |   6 +
 hw/core/qdev.c                          |  24 +
 hw/pci/msi.c                            |  16 +-
 hw/pci/msix.c                           |  10 +-
 hw/pci/pci.c                            |  13 +
 hw/remote/iommu.c                       | 131 ++++
 hw/remote/machine.c                     |  88 ++-
 hw/remote/vfio-user-obj.c               | 914 ++++++++++++++++++++++++
 softmmu/physmem.c                       |   4 +-
 softmmu/qdev-monitor.c                  |   4 +
 stubs/vfio-user-obj.c                   |   6 +
 tests/qtest/fuzz/generic_fuzz.c         |   9 +-
 .gitlab-ci.d/buildtest.yml              |   1 +
 .gitmodules                             |   3 +
 Kconfig.host                            |   4 +
 MAINTAINERS                             |   5 +
 hw/remote/Kconfig                       |   4 +
 hw/remote/meson.build                   |   4 +
 hw/remote/trace-events                  |  11 +
 meson_options.txt                       |   2 +
 stubs/meson.build                       |   1 +
 subprojects/libvfio-user                |   1 +
 tests/docker/dockerfiles/centos8.docker |   2 +
 32 files changed, 1424 insertions(+), 19 deletions(-)
 create mode 100644 include/hw/remote/iommu.h
 create mode 100644 include/hw/remote/vfio-user-obj.h
 create mode 100644 hw/remote/iommu.c
 create mode 100644 hw/remote/vfio-user-obj.c
 create mode 100644 stubs/vfio-user-obj.c
 create mode 160000 subprojects/libvfio-user

-- 
2.20.1
Re: [PATCH v10 00/14] vfio-user server in QEMU
Posted by Stefan Hajnoczi 1 year, 11 months ago
On Tue, May 24, 2022 at 11:30:19AM -0400, Jagannathan Raman wrote:
> Hi,
> 
> This is v10 of the server side changes to enable vfio-user in QEMU.
> 
> Thank you for reviewing and sharing your feedback for the previous
> revision. We have addressed your comments in this revision.
> 
> We have dropped the following patches in this series:
>   - tests/avocado: Specify target VM argument to helper routines
>   - configure: require cmake 3.19 or newer
>   - vfio-user: avocado tests for vfio-user
> 
> We have also made the following changes:
>   [PATCH v10 1/14] qdev: unplug blocker for devices
>     - updated functions comments for unplug blockers in hw/qdev-core.h
> 
>   [PATCH v10 4/14] vfio-user: build library
>     - uses meson build system to build libvfio-user library
>     - dropped ubuntu CI build
> 
>   [PATCH v10 5/14] vfio-user: define vfio-user-server object
>     - updated comments for VfioUserServerProperties in qapi/qom.json
> 
>   [PATCH v10 6/14] vfio-user: instantiate vfio-user context
>     - added comments to vfu_object_init_ctx() explaining function contract
> 
>   [PATCH v10 8/14] vfio-user: run vfio-user context
>     - vfu_object_ctx_run() asserts that VfuObject->device is not NULL
>     - added a comment to vfu_object_ctx_run() explaining why
>       VfuObject->device wouldn't be NULL
> 
> Thank you very much!

I'm happy with this series. I've asked Michael Tsirkin and Alex
Williamson to review the interrupt patch. Aside from that I think it's
time to merge and further work can be done in qemu.git.

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>