[PATCH v7 00/16] migration/cpr: support vhost-vsock devices

Andrey Drobyshev posted 16 patches 1 week, 1 day ago
backends/hostmem-memfd.c                        |   5 +-
backends/hostmem-shm.c                          |   5 +-
backends/iommufd.c                              |   4 +-
hw/vfio/container-legacy.c                      |  17 +-
hw/vfio/cpr-legacy.c                            |  10 +-
hw/vfio/cpr.c                                   |   6 +-
hw/vfio/pci.c                                   |   5 +-
hw/virtio/vhost-kernel.c                        |   6 +
hw/virtio/vhost-vsock.c                         | 193 +++++++++++++++++--
hw/virtio/vhost.c                               |  57 ++++--
include/hw/vfio/vfio-cpr.h                      |   6 +-
include/hw/virtio/vhost-backend.h               |   2 +
include/hw/virtio/vhost-vsock.h                 |   1 +
include/hw/virtio/vhost.h                       |  61 ++++++
include/migration/cpr.h                         |   2 +-
migration/cpr.c                                 |  55 ++++--
migration/options.c                             |   7 +
system/physmem.c                                |   5 +-
tests/functional/x86_64/meson.build             |   2 +
tests/functional/x86_64/test_vhost_vsock_cpr.py | 245 ++++++++++++++++++++++++
tests/qtest/migration/cpr-tests.c               | 129 ++++++++++++-
tests/unit/meson.build                          |   1 +
tests/unit/test-cpr.c                           |  98 ++++++++++
23 files changed, 846 insertions(+), 76 deletions(-)
[PATCH v7 00/16] migration/cpr: support vhost-vsock devices
Posted by Andrey Drobyshev 1 week, 1 day ago
v6 -> v7:

  * Patch 9:
    - cleanup closed vhostfd here rather than in #14;
    - add !cpr_incoming guard before saving CPR fd;

  * Patch 14:
    - remove closed vhostfd cleanup (moved to #9);
    - lift !cpr_incoming guard before saving CPR fd - not needed with an
      early return;

  * Patches 15-16 (NEW):
    - add qtests running cpr-transfer/cpr-exec with a vhost-vsock-pci
      device attached;
    - add functional test with a live guest doing host<->guest vsock
      transfers across a series of CPR migrations.

v6: https://lore.kernel.org/qemu-devel/20260915-up-vsock-vhost-v5-v6-0-4d31b2dc6afd@virtuozzo.com

Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
---
Andrey Drobyshev (16):
      migration/cpr: forbid saving duplicate CprFds into hash table
      tests/unit: add test for duplicate keys in CPR FD table
      migration: forbid snapshots in CPR migration modes
      tests/qtest/migration: add test for snapshot rejection in CPR modes
      vhost-vsock: block CPR migration modes
      vhost: add vhost_reset_owner op
      vhost-vsock: don't reset connections during CPR
      vhost-vsock: fix FD leak in realize()
      vhost-vsock: preserve vhost FD during CPR
      vhost: factor out vhost_dev_init_backend()
      vhost: make vhost_dev_cleanup() safe on a partially initialized device
      vhost: add vhost_dev_set_owner() / vhost_dev_reset_owner() helpers
      vhost: add vhost_dev_is_initialized() helper
      vhost-vsock: hand off device ownership across CPR
      tests/qtest/migration: add vhost-vsock tests for cpr-transfer and cpr-exec
      tests/functional: add vhost-vsock CPR test with a live guest

 backends/hostmem-memfd.c                        |   5 +-
 backends/hostmem-shm.c                          |   5 +-
 backends/iommufd.c                              |   4 +-
 hw/vfio/container-legacy.c                      |  17 +-
 hw/vfio/cpr-legacy.c                            |  10 +-
 hw/vfio/cpr.c                                   |   6 +-
 hw/vfio/pci.c                                   |   5 +-
 hw/virtio/vhost-kernel.c                        |   6 +
 hw/virtio/vhost-vsock.c                         | 193 +++++++++++++++++--
 hw/virtio/vhost.c                               |  57 ++++--
 include/hw/vfio/vfio-cpr.h                      |   6 +-
 include/hw/virtio/vhost-backend.h               |   2 +
 include/hw/virtio/vhost-vsock.h                 |   1 +
 include/hw/virtio/vhost.h                       |  61 ++++++
 include/migration/cpr.h                         |   2 +-
 migration/cpr.c                                 |  55 ++++--
 migration/options.c                             |   7 +
 system/physmem.c                                |   5 +-
 tests/functional/x86_64/meson.build             |   2 +
 tests/functional/x86_64/test_vhost_vsock_cpr.py | 245 ++++++++++++++++++++++++
 tests/qtest/migration/cpr-tests.c               | 129 ++++++++++++-
 tests/unit/meson.build                          |   1 +
 tests/unit/test-cpr.c                           |  98 ++++++++++
 23 files changed, 846 insertions(+), 76 deletions(-)
---
base-commit: 5f664cd37aec17e8145aa117d8da68f507edc8f1
change-id: 20260908-up-vsock-vhost-v5-c781b39f1c1a

Best regards,
--  
Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
Re: [PATCH v7 00/16] migration/cpr: support vhost-vsock devices
Posted by Stefano Garzarella 4 days, 10 hours ago
On Fri, Sep 18, 2026 at 04:46:51PM +0300, Andrey Drobyshev wrote:
>v6 -> v7:
>
>  * Patch 9:
>    - cleanup closed vhostfd here rather than in #14;
>    - add !cpr_incoming guard before saving CPR fd;
>
>  * Patch 14:
>    - remove closed vhostfd cleanup (moved to #9);
>    - lift !cpr_incoming guard before saving CPR fd - not needed with an
>      early return;
>
>  * Patches 15-16 (NEW):
>    - add qtests running cpr-transfer/cpr-exec with a vhost-vsock-pci
>      device attached;
>    - add functional test with a live guest doing host<->guest vsock
>      transfers across a series of CPR migrations.
>
>v6: https://lore.kernel.org/qemu-devel/20260915-up-vsock-vhost-v5-v6-0-4d31b2dc6afd@virtuozzo.com
>
>Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
>---
>Andrey Drobyshev (16):
>      migration/cpr: forbid saving duplicate CprFds into hash table
>      tests/unit: add test for duplicate keys in CPR FD table
>      migration: forbid snapshots in CPR migration modes
>      tests/qtest/migration: add test for snapshot rejection in CPR modes
>      vhost-vsock: block CPR migration modes
>      vhost: add vhost_reset_owner op
>      vhost-vsock: don't reset connections during CPR
>      vhost-vsock: fix FD leak in realize()
>      vhost-vsock: preserve vhost FD during CPR
>      vhost: factor out vhost_dev_init_backend()
>      vhost: make vhost_dev_cleanup() safe on a partially initialized device
>      vhost: add vhost_dev_set_owner() / vhost_dev_reset_owner() helpers
>      vhost: add vhost_dev_is_initialized() helper
>      vhost-vsock: hand off device ownership across CPR
>      tests/qtest/migration: add vhost-vsock tests for cpr-transfer and cpr-exec
>      tests/functional: add vhost-vsock CPR test with a live guest

I think I sent my A-b/R-b to all vhost/vsock related patches (if not 
please let me know). As for the other patches, I don't think I know 
enough about CPR.

So for vhost/vsock everything LGTM, I left just a comment more for my 
curiosity.

Thanks for the patience and the work!
Stefano
Re: [PATCH v7 00/16] migration/cpr: support vhost-vsock devices
Posted by Andrey Drobyshev 3 days, 8 hours ago
On 9/22/26 12:30 PM, Stefano Garzarella wrote:
> On Fri, Sep 18, 2026 at 04:46:51PM +0300, Andrey Drobyshev wrote:
>> v6 -> v7:
>>
>>  * Patch 9:
>>    - cleanup closed vhostfd here rather than in #14;
>>    - add !cpr_incoming guard before saving CPR fd;
>>
>>  * Patch 14:
>>    - remove closed vhostfd cleanup (moved to #9);
>>    - lift !cpr_incoming guard before saving CPR fd - not needed with an
>>      early return;
>>
>>  * Patches 15-16 (NEW):
>>    - add qtests running cpr-transfer/cpr-exec with a vhost-vsock-pci
>>      device attached;
>>    - add functional test with a live guest doing host<->guest vsock
>>      transfers across a series of CPR migrations.
>>
>> v6: https://lore.kernel.org/qemu-devel/20260915-up-vsock-vhost-v5-v6-0-4d31b2dc6afd@virtuozzo.com
>>
>> Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
>> ---
>> Andrey Drobyshev (16):
>>      migration/cpr: forbid saving duplicate CprFds into hash table
>>      tests/unit: add test for duplicate keys in CPR FD table
>>      migration: forbid snapshots in CPR migration modes
>>      tests/qtest/migration: add test for snapshot rejection in CPR modes
>>      vhost-vsock: block CPR migration modes
>>      vhost: add vhost_reset_owner op
>>      vhost-vsock: don't reset connections during CPR
>>      vhost-vsock: fix FD leak in realize()
>>      vhost-vsock: preserve vhost FD during CPR
>>      vhost: factor out vhost_dev_init_backend()
>>      vhost: make vhost_dev_cleanup() safe on a partially initialized device
>>      vhost: add vhost_dev_set_owner() / vhost_dev_reset_owner() helpers
>>      vhost: add vhost_dev_is_initialized() helper
>>      vhost-vsock: hand off device ownership across CPR
>>      tests/qtest/migration: add vhost-vsock tests for cpr-transfer and cpr-exec
>>      tests/functional: add vhost-vsock CPR test with a live guest
> 
> I think I sent my A-b/R-b to all vhost/vsock related patches (if not 
> please let me know). As for the other patches, I don't think I know 
> enough about CPR.
> 
> So for vhost/vsock everything LGTM, I left just a comment more for my 
> curiosity.
> 
> Thanks for the patience and the work!
> Stefano

Thanks for your patience and your reviews!

Andrey