[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 30/40] vdpa: batch map/unmap op per svq pair basis
From: |
Si-Wei Liu |
Subject: |
[PATCH 30/40] vdpa: batch map/unmap op per svq pair basis |
Date: |
Thu, 7 Dec 2023 09:39:43 -0800 |
Coalesce multiple map or unmap operations to just one
so that all mapping setup or teardown can occur in a
single DMA batch.
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
---
hw/virtio/vhost-vdpa.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
index 68dc01b..d98704a 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -1288,6 +1288,7 @@ static bool vhost_vdpa_svqs_start(struct vhost_dev *dev)
return true;
}
+ vhost_vdpa_dma_batch_begin_once(v->shared, v->address_space_id);
for (i = 0; i < v->shadow_vqs->len; ++i) {
VirtQueue *vq = virtio_get_queue(dev->vdev, dev->vq_index + i);
VhostShadowVirtqueue *svq = g_ptr_array_index(v->shadow_vqs, i);
@@ -1315,6 +1316,7 @@ static bool vhost_vdpa_svqs_start(struct vhost_dev *dev)
goto err_set_addr;
}
}
+ vhost_vdpa_dma_batch_end_once(v->shared, v->address_space_id);
return true;
@@ -1323,6 +1325,7 @@ err_set_addr:
err_map:
vhost_svq_stop(g_ptr_array_index(v->shadow_vqs, i));
+ vhost_vdpa_dma_batch_end_once(v->shared, v->address_space_id);
err:
error_reportf_err(err, "Cannot setup SVQ %u: ", i);
@@ -1343,6 +1346,7 @@ static void vhost_vdpa_svqs_stop(struct vhost_dev *dev)
return;
}
+ vhost_vdpa_dma_batch_begin_once(v->shared, v->address_space_id);
for (unsigned i = 0; i < v->shadow_vqs->len; ++i) {
VhostShadowVirtqueue *svq = g_ptr_array_index(v->shadow_vqs, i);
@@ -1352,6 +1356,7 @@ static void vhost_vdpa_svqs_stop(struct vhost_dev *dev)
event_notifier_cleanup(&svq->hdev_kick);
event_notifier_cleanup(&svq->hdev_call);
}
+ vhost_vdpa_dma_batch_end_once(v->shared, v->address_space_id);
}
static void vhost_vdpa_suspend(struct vhost_dev *dev)
--
1.8.3.1
- [PATCH 19/40] vdpa: should avoid map flushing with persistent iotlb, (continued)
- [PATCH 19/40] vdpa: should avoid map flushing with persistent iotlb, Si-Wei Liu, 2023/12/07
- [PATCH 21/40] vdpa: vhost_vdpa_dma_batch_end_once rename, Si-Wei Liu, 2023/12/07
- [PATCH 16/40] vdpa: indicate SVQ switching via flag, Si-Wei Liu, 2023/12/07
- [PATCH 24/40] vdpa: factor out vhost_vdpa_dma_batch_end, Si-Wei Liu, 2023/12/07
- [PATCH 26/40] vdpa: return int for dma_batch_once API, Si-Wei Liu, 2023/12/07
- [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 <=
- [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, 2023/12/07
- [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