[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 34/40] vdpa: fix network breakage after cancelling migration
From: |
Si-Wei Liu |
Subject: |
[PATCH 34/40] vdpa: fix network breakage after cancelling migration |
Date: |
Thu, 7 Dec 2023 09:39:47 -0800 |
Fix an issue where cancellation of ongoing migration ends up
with no network connectivity.
When canceling migration, SVQ will be switched back to the
passthrough mode, but the right call fd is not programed to
the device and the svq's own call fd is still used. At the
point of this transitioning period, the shadow_vqs_enabled
hadn't been set back to false yet, causing the installation
of call fd inadvertently bypassed.
Fixes: a8ac88585da1 ("vhost: Add Shadow VirtQueue call forwarding capabilities")
Cc: Eugenio PĂ©rez <eperezma@redhat.com>
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
---
hw/virtio/vhost-vdpa.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
index 4010fd9..8ba390d 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -1647,7 +1647,12 @@ static int vhost_vdpa_set_vring_call(struct vhost_dev
*dev,
/* Remember last call fd because we can switch to SVQ anytime. */
vhost_svq_set_svq_call_fd(svq, file->fd);
- if (v->shadow_vqs_enabled) {
+ /*
+ * In the event of SVQ switching to off, shadow_vqs_enabled has
+ * not been set to false yet, but the underlying call fd will
+ * switch back to the guest notifier for passthrough VQs.
+ */
+ if (v->shadow_vqs_enabled && v->shared->svq_switching >= 0) {
return 0;
}
--
1.8.3.1
- [PATCH 27/40] vdpa: add asid to all dma_batch call sites, (continued)
- [PATCH 27/40] vdpa: add asid to all dma_batch call sites, Si-Wei Liu, 2023/12/07
- [PATCH 20/40] vdpa: avoid mapping flush across reset, Si-Wei Liu, 2023/12/07
- [PATCH 23/40] vdpa: vhost_vdpa_dma_batch_begin_once rename, Si-Wei Liu, 2023/12/07
- [PATCH 28/40] vdpa: support iotlb_batch_asid, Si-Wei Liu, 2023/12/07
- [PATCH 30/40] vdpa: batch map/unmap op per svq pair basis, Si-Wei Liu, 2023/12/07
- [PATCH 29/40] vdpa: expose API vhost_vdpa_dma_batch_once, Si-Wei Liu, 2023/12/07
- [PATCH 31/40] vdpa: batch map and unmap around cvq svq start/stop, Si-Wei Liu, 2023/12/07
- [PATCH 32/40] vdpa: factor out vhost_vdpa_net_get_nc_vdpa, Si-Wei Liu, 2023/12/07
- [PATCH 34/40] vdpa: fix network breakage after cancelling migration,
Si-Wei Liu <=
- [PATCH 35/40] vdpa: add vhost_vdpa_set_address_space_id trace, Si-Wei Liu, 2023/12/07
- [PATCH 33/40] vdpa: batch multiple dma_unmap to a single call for vm stop, Si-Wei Liu, 2023/12/07
- [PATCH 36/40] vdpa: add vhost_vdpa_get_vring_base trace for svq mode, Si-Wei Liu, 2023/12/07
- [PATCH 37/40] vdpa: add vhost_vdpa_set_dev_vring_base trace for svq mode, Si-Wei Liu, 2023/12/07
- [PATCH 38/40] vdpa: add trace events for eval_flush, Si-Wei Liu, 2023/12/07
- [PATCH 40/40] vdpa: add trace event for vhost_vdpa_net_load_mq, Si-Wei Liu, 2023/12/07