[PATCH v8 00/17] vfio-user server in QEMU

Jagannathan Raman posted 17 patches 2 years ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/cover.1650379269.git.jag.raman@oracle.com
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>, Thomas Huth <thuth@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, Jagannathan Raman <jag.raman@oracle.com>, John G Johnson <john.g.johnson@oracle.com>, Peter Xu <peterx@redhat.com>, David Hildenbrand <david@redhat.com>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>, Cleber Rosa <crosa@redhat.com>, Alexander Bulekov <alxndr@bu.edu>, Bandan Das <bsd@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Darren Kenny <darren.kenny@oracle.com>, Qiuhao Li <Qiuhao.Li@outlook.com>, Laurent Vivier <lvivier@redhat.com>
There is a newer version of this series
configure                                  |  36 +-
meson.build                                |  44 +-
qapi/misc.json                             |  23 +
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                          | 114 +++
hw/remote/machine.c                        |  88 +-
hw/remote/vfio-user-obj.c                  | 891 +++++++++++++++++++++
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                 |   2 +
.gitmodules                                |   3 +
Kconfig.host                               |   4 +
MAINTAINERS                                |   6 +
hw/remote/Kconfig                          |   4 +
hw/remote/meson.build                      |   4 +
hw/remote/trace-events                     |  11 +
meson_options.txt                          |   3 +
stubs/meson.build                          |   1 +
subprojects/libvfio-user                   |   1 +
tests/avocado/avocado_qemu/__init__.py     |  14 +-
tests/avocado/vfio-user.py                 | 164 ++++
tests/docker/dockerfiles/centos8.docker    |   2 +
tests/docker/dockerfiles/ubuntu2004.docker |   2 +
35 files changed, 1594 insertions(+), 24 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
create mode 100644 tests/avocado/vfio-user.py
[PATCH v8 00/17] vfio-user server in QEMU
Posted by Jagannathan Raman 2 years ago
Hi,

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

Thank you very much for reviewing the last revision of this series!

We've made the following changes in this revision:

[PATCH v8 06/17] vfio-user: build library
  - updated libvfio-user to the latest

[PATCH v8 07/17] vfio-user: define vfio-user-server object
  - changed auto_shutdown to a per-instance property than
    a per-class property

[PATCH v8 12/17] vfio-user: IOMMU support for remote device
  - lock mutex while looking up hash table
  - removed global hash table - added RemoteIommu object to
    house this variable
  - added unplug handler to remove per-device IOMMU entry
    when a PCIDevice is unplugged

[PATCH v8 14/17] vfio-user: handle PCI BAR accesses
  - refactored vfu_object_bar_rw()
  - vfu_object_bar_rw() handles short sections returned by
    memory_region_find()

[PATCH v8 15/17] vfio-user: handle device interrupts
  - removed callbacks for msi_notify() and msix_notify()
  - added callbacks for msi_send_message() and
    msi(x)_get_message() operations

Thank you!

Jagannathan Raman (17):
  tests/avocado: Specify target VM argument to helper routines
  qdev: unplug blocker for devices
  remote/machine: add HotplugHandler for remote machine
  remote/machine: add vfio-user property
  configure: require cmake 3.19 or newer
  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
  vfio-user: avocado tests for vfio-user

 configure                                  |  36 +-
 meson.build                                |  44 +-
 qapi/misc.json                             |  23 +
 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                          | 114 +++
 hw/remote/machine.c                        |  88 +-
 hw/remote/vfio-user-obj.c                  | 891 +++++++++++++++++++++
 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                 |   2 +
 .gitmodules                                |   3 +
 Kconfig.host                               |   4 +
 MAINTAINERS                                |   6 +
 hw/remote/Kconfig                          |   4 +
 hw/remote/meson.build                      |   4 +
 hw/remote/trace-events                     |  11 +
 meson_options.txt                          |   3 +
 stubs/meson.build                          |   1 +
 subprojects/libvfio-user                   |   1 +
 tests/avocado/avocado_qemu/__init__.py     |  14 +-
 tests/avocado/vfio-user.py                 | 164 ++++
 tests/docker/dockerfiles/centos8.docker    |   2 +
 tests/docker/dockerfiles/ubuntu2004.docker |   2 +
 35 files changed, 1594 insertions(+), 24 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
 create mode 100644 tests/avocado/vfio-user.py

-- 
2.20.1
Re: [PATCH v8 00/17] vfio-user server in QEMU
Posted by Stefan Hajnoczi 2 years ago
On Tue, Apr 19, 2022 at 04:44:05PM -0400, Jagannathan Raman wrote:
> This is v8 of the server side changes to enable vfio-user in QEMU.
> 
> Thank you very much for reviewing the last revision of this series!

I posted some minor comments. I hope the next revision or the one after
it will be merged because the code will benefit from being in-tree where
more people can easily try it out.

Stefan
Re: [PATCH v8 00/17] vfio-user server in QEMU
Posted by Jag Raman 2 years ago

> On Apr 25, 2022, at 6:32 AM, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> 
> On Tue, Apr 19, 2022 at 04:44:05PM -0400, Jagannathan Raman wrote:
>> This is v8 of the server side changes to enable vfio-user in QEMU.
>> 
>> Thank you very much for reviewing the last revision of this series!
> 
> I posted some minor comments. I hope the next revision or the one after
> it will be merged because the code will benefit from being in-tree where
> more people can easily try it out.

Thank you very much!

Will send the next revision out shortly!

--
Jag

> 
> Stefan