[PULL 00/23] vfio queue

Cédric Le Goater posted 23 patches 3 weeks, 5 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260630043107.1511076-1-clg@redhat.com
Maintainers: Yi Liu <yi.l.liu@intel.com>, Eric Auger <eric.auger@redhat.com>, Zhenzhong Duan <zhenzhong.duan@intel.com>, Alex Williamson <alex@shazbot.org>, "Cédric Le Goater" <clg@redhat.com>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, John Levon <john.levon@nutanix.com>, Thanos Makatos <thanos.makatos@nutanix.com>, "Philippe Mathieu-Daudé" <philmd@mailo.com>, Zhao Liu <zhao1.liu@intel.com>, Halil Pasic <pasic@linux.ibm.com>, Christian Borntraeger <borntraeger@linux.ibm.com>, Jason Herne <jjherne@linux.ibm.com>, Eric Farman <farman@linux.ibm.com>, Matthew Rosato <mjrosato@linux.ibm.com>, Richard Henderson <richard.henderson@linaro.org>, Ilya Leoshkevich <iii@linux.ibm.com>, David Hildenbrand <david@kernel.org>, Cornelia Huck <cohuck@redhat.com>, Eric Blake <eblake@redhat.com>, Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>, John Snow <jsnow@redhat.com>, Markus Armbruster <armbru@redhat.com>
There is a newer version of this series
docs/devel/migration/vfio.rst      |  17 +++-
docs/interop/vfio-user.rst         |  82 +++++++++------
qapi/migration.json                |  14 ++-
hw/vfio/pci.h                      |   1 +
hw/vfio/vfio-migration-internal.h  |   2 +
include/hw/vfio/vfio-container.h   |  15 ---
include/migration/client-options.h |   1 +
include/migration/misc.h           |   2 +
include/migration/register.h       |  56 +++++-----
include/system/host_iommu_device.h |   9 ++
migration/migration.h              |  34 ++++++-
migration/savevm.h                 |   9 +-
backends/iommufd.c                 |   8 ++
hw/core/machine.c                  |   1 +
hw/s390x/s390-stattrib.c           |   2 +-
hw/vfio-user/proxy.c               |  21 ++--
hw/vfio/container.c                |  38 -------
hw/vfio/iommufd.c                  |  50 ++++++---
hw/vfio/listener.c                 |   5 +-
hw/vfio/migration.c                | 204 +++++++++++++++++++++++++++++--------
hw/vfio/pci.c                      | 129 +++++++++++++++++++----
migration/block-dirty-bitmap.c     |  11 +-
migration/migration.c              |  73 ++++++++++---
migration/options.c                |   9 ++
migration/ram.c                    |  40 ++++----
migration/savevm.c                 | 173 +++++++++++++++++++++----------
hw/vfio/trace-events               |   7 +-
migration/trace-events             |   9 +-
28 files changed, 709 insertions(+), 313 deletions(-)
[PULL 00/23] vfio queue
Posted by Cédric Le Goater 3 weeks, 5 days ago
The following changes since commit 30e8a06b64aa58a3990ba39cb5d09531e7d265e0:

  Merge tag 'net-pull-request' of https://github.com/jasowang/qemu into staging (2026-06-29 17:41:42 +0200)

are available in the Git repository at:

  https://github.com/legoater/qemu/ tags/pull-vfio-20260630

for you to fetch changes up to afe79bb7bf7fe16f418d6e10522946e13da04384:

  vfio/listener: Fix translated_addr for non-identity-mapped RAM sections (2026-06-30 05:35:56 +0200)

----------------------------------------------------------------
vfio queue:

* Fixes ROM read issues in vfio/pci: information leak, error
  propagation, and uninitialized state
* Validates VERSION replies in vfio-user and updates the spec
  for DMA access mode bits
* Merges .dma_map_file() into .dma_map() in the iommufd backend
* Reworks switchover-ack to be re-usable and implements the
  VFIO_PRECOPY_INFO_REINIT feature for additional pre-copy
  iterations before switchover
* Adds ATS support for passthrough devices via iommufd
* Fixes translated_addr for non-identity-mapped RAM sections in
  the VFIO listener

----------------------------------------------------------------
Avihai Horon (14):
      migration: Propagate errors in migration_completion_precopy()
      migration/ram: Use migration_bitmap_sync_precopy() for postcopy discard
      migration: Run final save_query_pending at switchover
      migration: Log the approver in qemu_loadvm_approve_switchover()
      migration: Replace switchover_ack_needed SaveVMHandler
      migration: Rename switchover-ack code to legacy
      migration: Make switchover-ack re-usable
      migration: Fail migration if switchover-ack is requested after switchover decision
      vfio/migration: Extract VFIO_MIG_FLAG_DEV_INIT_DATA_SENT sending to helper
      vfio/migration: Add Error ** parameter to vfio_migration_init()
      vfio/migration: Add new switchover-ack mechanism
      vfio/migration: Implement VFIO_PRECOPY_INFO_REINIT feature
      vfio/migration: Check VFIO_PRECOPY_INFO_REINIT during switchover
      migration: Enable new switchover-ack

Cédric Le Goater (3):
      vfio/pci: Fix information leak in vfio_rom_read()
      vfio/iommufd: Merge .dma_map_file() into .dma_map()
      vfio/listener: Fix translated_addr for non-identity-mapped RAM sections

GuoHan Zhao (1):
      vfio-user: validate VERSION replies

Mario Casquero (2):
      vfio/pci: Initialize rom_read_failed in vfio_pci_load_rom()
      vfio/pci: Propagate errors in vfio_pci_load_rom() using Error API

Mattias Nissler (1):
      docs: Update vfio-user spec to describe DMA access mode bits

Nathan Chen (2):
      iommufd: Introduce handler for device ATS support
      vfio/pci: Add ats property

 docs/devel/migration/vfio.rst      |  17 +++-
 docs/interop/vfio-user.rst         |  82 +++++++++------
 qapi/migration.json                |  14 ++-
 hw/vfio/pci.h                      |   1 +
 hw/vfio/vfio-migration-internal.h  |   2 +
 include/hw/vfio/vfio-container.h   |  15 ---
 include/migration/client-options.h |   1 +
 include/migration/misc.h           |   2 +
 include/migration/register.h       |  56 +++++-----
 include/system/host_iommu_device.h |   9 ++
 migration/migration.h              |  34 ++++++-
 migration/savevm.h                 |   9 +-
 backends/iommufd.c                 |   8 ++
 hw/core/machine.c                  |   1 +
 hw/s390x/s390-stattrib.c           |   2 +-
 hw/vfio-user/proxy.c               |  21 ++--
 hw/vfio/container.c                |  38 -------
 hw/vfio/iommufd.c                  |  50 ++++++---
 hw/vfio/listener.c                 |   5 +-
 hw/vfio/migration.c                | 204 +++++++++++++++++++++++++++++--------
 hw/vfio/pci.c                      | 129 +++++++++++++++++++----
 migration/block-dirty-bitmap.c     |  11 +-
 migration/migration.c              |  73 ++++++++++---
 migration/options.c                |   9 ++
 migration/ram.c                    |  40 ++++----
 migration/savevm.c                 | 173 +++++++++++++++++++++----------
 hw/vfio/trace-events               |   7 +-
 migration/trace-events             |   9 +-
 28 files changed, 709 insertions(+), 313 deletions(-)


Re: [PULL 00/23] vfio queue
Posted by Stefan Hajnoczi 3 weeks, 2 days ago
On Tue, Jun 30, 2026 at 6:33 AM Cédric Le Goater <clg@redhat.com> wrote:
>
> The following changes since commit 30e8a06b64aa58a3990ba39cb5d09531e7d265e0:
>
>   Merge tag 'net-pull-request' of https://github.com/jasowang/qemu into staging (2026-06-29 17:41:42 +0200)
>
> are available in the Git repository at:
>
>   https://github.com/legoater/qemu/ tags/pull-vfio-20260630
>
> for you to fetch changes up to afe79bb7bf7fe16f418d6e10522946e13da04384:
>
>   vfio/listener: Fix translated_addr for non-identity-mapped RAM sections (2026-06-30 05:35:56 +0200)

Hi Cedric,
This pull request breaks the migration test in the
ubuntu-24.04-s390x-all-system CI job:
https://gitlab.com/qemu-project/qemu/-/jobs/15157007316#L3078

>>> RUST_BACKTRACE=1 PYTHON=/home/gitlab-runner/builds/P3MFS4LUf/0/qemu-project/qemu/build/pyvenv/bin/python3 QTEST_QEMU_IMG=./qemu-img MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 QTEST_QEMU_VNC_BINARY=./tools/qemu-vnc/qemu-vnc MALLOC_PERTURB_=226 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 G_TEST_DBUS_DAEMON=/home/gitlab-runner/builds/P3MFS4LUf/0/qemu-project/qemu/tests/dbus-daemon.sh QTEST_QEMU_BINARY=./qemu-system-s390x ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 QTEST_QEMU_STORAGE_DAEMON_BINARY=./storage-daemon/qemu-storage-daemon /home/gitlab-runner/builds/P3MFS4LUf/0/qemu-project/qemu/build/tests/qtest/migration-test --tap -k --full
――――――――――――――――――――――――――――――――――――― ✀ ―――――――――――――――――――――――――――――――――――――
stderr:
Memory content inconsistency at 48b7000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48b8000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48b9000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48ba000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48bb000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48bc000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48bd000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48be000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48bf000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
Memory content inconsistency at 48c0000 first_byte = b5 last_byte = b4
current = b5 hit_edge = 1
and in another 6975 pages**
ERROR:../tests/qtest/migration/framework.c:190:check_guests_ram:
assertion failed: (bad == 0)
(test program exited with status code -6)

Please take a look and resend the pull request with a fix.

Thanks,
Stefan

>
> ----------------------------------------------------------------
> vfio queue:
>
> * Fixes ROM read issues in vfio/pci: information leak, error
>   propagation, and uninitialized state
> * Validates VERSION replies in vfio-user and updates the spec
>   for DMA access mode bits
> * Merges .dma_map_file() into .dma_map() in the iommufd backend
> * Reworks switchover-ack to be re-usable and implements the
>   VFIO_PRECOPY_INFO_REINIT feature for additional pre-copy
>   iterations before switchover
> * Adds ATS support for passthrough devices via iommufd
> * Fixes translated_addr for non-identity-mapped RAM sections in
>   the VFIO listener
>
> ----------------------------------------------------------------
> Avihai Horon (14):
>       migration: Propagate errors in migration_completion_precopy()
>       migration/ram: Use migration_bitmap_sync_precopy() for postcopy discard
>       migration: Run final save_query_pending at switchover
>       migration: Log the approver in qemu_loadvm_approve_switchover()
>       migration: Replace switchover_ack_needed SaveVMHandler
>       migration: Rename switchover-ack code to legacy
>       migration: Make switchover-ack re-usable
>       migration: Fail migration if switchover-ack is requested after switchover decision
>       vfio/migration: Extract VFIO_MIG_FLAG_DEV_INIT_DATA_SENT sending to helper
>       vfio/migration: Add Error ** parameter to vfio_migration_init()
>       vfio/migration: Add new switchover-ack mechanism
>       vfio/migration: Implement VFIO_PRECOPY_INFO_REINIT feature
>       vfio/migration: Check VFIO_PRECOPY_INFO_REINIT during switchover
>       migration: Enable new switchover-ack
>
> Cédric Le Goater (3):
>       vfio/pci: Fix information leak in vfio_rom_read()
>       vfio/iommufd: Merge .dma_map_file() into .dma_map()
>       vfio/listener: Fix translated_addr for non-identity-mapped RAM sections
>
> GuoHan Zhao (1):
>       vfio-user: validate VERSION replies
>
> Mario Casquero (2):
>       vfio/pci: Initialize rom_read_failed in vfio_pci_load_rom()
>       vfio/pci: Propagate errors in vfio_pci_load_rom() using Error API
>
> Mattias Nissler (1):
>       docs: Update vfio-user spec to describe DMA access mode bits
>
> Nathan Chen (2):
>       iommufd: Introduce handler for device ATS support
>       vfio/pci: Add ats property
>
>  docs/devel/migration/vfio.rst      |  17 +++-
>  docs/interop/vfio-user.rst         |  82 +++++++++------
>  qapi/migration.json                |  14 ++-
>  hw/vfio/pci.h                      |   1 +
>  hw/vfio/vfio-migration-internal.h  |   2 +
>  include/hw/vfio/vfio-container.h   |  15 ---
>  include/migration/client-options.h |   1 +
>  include/migration/misc.h           |   2 +
>  include/migration/register.h       |  56 +++++-----
>  include/system/host_iommu_device.h |   9 ++
>  migration/migration.h              |  34 ++++++-
>  migration/savevm.h                 |   9 +-
>  backends/iommufd.c                 |   8 ++
>  hw/core/machine.c                  |   1 +
>  hw/s390x/s390-stattrib.c           |   2 +-
>  hw/vfio-user/proxy.c               |  21 ++--
>  hw/vfio/container.c                |  38 -------
>  hw/vfio/iommufd.c                  |  50 ++++++---
>  hw/vfio/listener.c                 |   5 +-
>  hw/vfio/migration.c                | 204 +++++++++++++++++++++++++++++--------
>  hw/vfio/pci.c                      | 129 +++++++++++++++++++----
>  migration/block-dirty-bitmap.c     |  11 +-
>  migration/migration.c              |  73 ++++++++++---
>  migration/options.c                |   9 ++
>  migration/ram.c                    |  40 ++++----
>  migration/savevm.c                 | 173 +++++++++++++++++++++----------
>  hw/vfio/trace-events               |   7 +-
>  migration/trace-events             |   9 +-
>  28 files changed, 709 insertions(+), 313 deletions(-)
>
>
Re: [PULL 00/23] vfio queue
Posted by Cédric Le Goater 3 weeks, 2 days ago
On 7/2/26 21:24, Stefan Hajnoczi wrote:
> On Tue, Jun 30, 2026 at 6:33 AM Cédric Le Goater <clg@redhat.com> wrote:
>>
>> The following changes since commit 30e8a06b64aa58a3990ba39cb5d09531e7d265e0:
>>
>>    Merge tag 'net-pull-request' of https://github.com/jasowang/qemu into staging (2026-06-29 17:41:42 +0200)
>>
>> are available in the Git repository at:
>>
>>    https://github.com/legoater/qemu/ tags/pull-vfio-20260630
>>
>> for you to fetch changes up to afe79bb7bf7fe16f418d6e10522946e13da04384:
>>
>>    vfio/listener: Fix translated_addr for non-identity-mapped RAM sections (2026-06-30 05:35:56 +0200)
> 
> Hi Cedric,
> This pull request breaks the migration test in the
> ubuntu-24.04-s390x-all-system CI job:
> https://gitlab.com/qemu-project/qemu/-/jobs/15157007316#L3078

Oh. Sorry about that. I didn't see that when I ran CI.

Thanks,

C.


> 
>>>> RUST_BACKTRACE=1 PYTHON=/home/gitlab-runner/builds/P3MFS4LUf/0/qemu-project/qemu/build/pyvenv/bin/python3 QTEST_QEMU_IMG=./qemu-img MESON_TEST_ITERATION=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 QTEST_QEMU_VNC_BINARY=./tools/qemu-vnc/qemu-vnc MALLOC_PERTURB_=226 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 G_TEST_DBUS_DAEMON=/home/gitlab-runner/builds/P3MFS4LUf/0/qemu-project/qemu/tests/dbus-daemon.sh QTEST_QEMU_BINARY=./qemu-system-s390x ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 QTEST_QEMU_STORAGE_DAEMON_BINARY=./storage-daemon/qemu-storage-daemon /home/gitlab-runner/builds/P3MFS4LUf/0/qemu-project/qemu/build/tests/qtest/migration-test --tap -k --full
> ――――――――――――――――――――――――――――――――――――― ✀ ―――――――――――――――――――――――――――――――――――――
> stderr:
> Memory content inconsistency at 48b7000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48b8000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48b9000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48ba000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48bb000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48bc000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48bd000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48be000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48bf000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> Memory content inconsistency at 48c0000 first_byte = b5 last_byte = b4
> current = b5 hit_edge = 1
> and in another 6975 pages**
> ERROR:../tests/qtest/migration/framework.c:190:check_guests_ram:
> assertion failed: (bad == 0)
> (test program exited with status code -6)
> 
> Please take a look and resend the pull request with a fix.
> 
> Thanks,
> Stefan
> 
>>
>> ----------------------------------------------------------------
>> vfio queue:
>>
>> * Fixes ROM read issues in vfio/pci: information leak, error
>>    propagation, and uninitialized state
>> * Validates VERSION replies in vfio-user and updates the spec
>>    for DMA access mode bits
>> * Merges .dma_map_file() into .dma_map() in the iommufd backend
>> * Reworks switchover-ack to be re-usable and implements the
>>    VFIO_PRECOPY_INFO_REINIT feature for additional pre-copy
>>    iterations before switchover
>> * Adds ATS support for passthrough devices via iommufd
>> * Fixes translated_addr for non-identity-mapped RAM sections in
>>    the VFIO listener
>>
>> ----------------------------------------------------------------
>> Avihai Horon (14):
>>        migration: Propagate errors in migration_completion_precopy()
>>        migration/ram: Use migration_bitmap_sync_precopy() for postcopy discard
>>        migration: Run final save_query_pending at switchover
>>        migration: Log the approver in qemu_loadvm_approve_switchover()
>>        migration: Replace switchover_ack_needed SaveVMHandler
>>        migration: Rename switchover-ack code to legacy
>>        migration: Make switchover-ack re-usable
>>        migration: Fail migration if switchover-ack is requested after switchover decision
>>        vfio/migration: Extract VFIO_MIG_FLAG_DEV_INIT_DATA_SENT sending to helper
>>        vfio/migration: Add Error ** parameter to vfio_migration_init()
>>        vfio/migration: Add new switchover-ack mechanism
>>        vfio/migration: Implement VFIO_PRECOPY_INFO_REINIT feature
>>        vfio/migration: Check VFIO_PRECOPY_INFO_REINIT during switchover
>>        migration: Enable new switchover-ack
>>
>> Cédric Le Goater (3):
>>        vfio/pci: Fix information leak in vfio_rom_read()
>>        vfio/iommufd: Merge .dma_map_file() into .dma_map()
>>        vfio/listener: Fix translated_addr for non-identity-mapped RAM sections
>>
>> GuoHan Zhao (1):
>>        vfio-user: validate VERSION replies
>>
>> Mario Casquero (2):
>>        vfio/pci: Initialize rom_read_failed in vfio_pci_load_rom()
>>        vfio/pci: Propagate errors in vfio_pci_load_rom() using Error API
>>
>> Mattias Nissler (1):
>>        docs: Update vfio-user spec to describe DMA access mode bits
>>
>> Nathan Chen (2):
>>        iommufd: Introduce handler for device ATS support
>>        vfio/pci: Add ats property
>>
>>   docs/devel/migration/vfio.rst      |  17 +++-
>>   docs/interop/vfio-user.rst         |  82 +++++++++------
>>   qapi/migration.json                |  14 ++-
>>   hw/vfio/pci.h                      |   1 +
>>   hw/vfio/vfio-migration-internal.h  |   2 +
>>   include/hw/vfio/vfio-container.h   |  15 ---
>>   include/migration/client-options.h |   1 +
>>   include/migration/misc.h           |   2 +
>>   include/migration/register.h       |  56 +++++-----
>>   include/system/host_iommu_device.h |   9 ++
>>   migration/migration.h              |  34 ++++++-
>>   migration/savevm.h                 |   9 +-
>>   backends/iommufd.c                 |   8 ++
>>   hw/core/machine.c                  |   1 +
>>   hw/s390x/s390-stattrib.c           |   2 +-
>>   hw/vfio-user/proxy.c               |  21 ++--
>>   hw/vfio/container.c                |  38 -------
>>   hw/vfio/iommufd.c                  |  50 ++++++---
>>   hw/vfio/listener.c                 |   5 +-
>>   hw/vfio/migration.c                | 204 +++++++++++++++++++++++++++++--------
>>   hw/vfio/pci.c                      | 129 +++++++++++++++++++----
>>   migration/block-dirty-bitmap.c     |  11 +-
>>   migration/migration.c              |  73 ++++++++++---
>>   migration/options.c                |   9 ++
>>   migration/ram.c                    |  40 ++++----
>>   migration/savevm.c                 | 173 +++++++++++++++++++++----------
>>   hw/vfio/trace-events               |   7 +-
>>   migration/trace-events             |   9 +-
>>   28 files changed, 709 insertions(+), 313 deletions(-)
>>
>>
>