@@ -187,14 +187,14 @@ static bool vhost_vdpa_map_batch_begin(VhostVDPAShared *s, uint32_t asid)
return true;
}
-static int vhost_vdpa_dma_batch_begin_once(VhostVDPAShared *s)
+static int vhost_vdpa_dma_batch_begin_once(VhostVDPAShared *s, uint32_t asid)
{
if (!(s->backend_cap & (0x1ULL << VHOST_BACKEND_F_IOTLB_BATCH)) ||
s->iotlb_batch_begin_sent) {
return 0;
}
- if (vhost_vdpa_map_batch_begin(s, 0)) {
+ if (vhost_vdpa_map_batch_begin(s, asid)) {
s->iotlb_batch_begin_sent = true;
}
@@ -227,7 +227,7 @@ static bool vhost_vdpa_dma_batch_end(VhostVDPAShared *s, uint32_t asid)
return true;
}
-static int vhost_vdpa_dma_batch_end_once(VhostVDPAShared *s)
+static int vhost_vdpa_dma_batch_end_once(VhostVDPAShared *s, uint32_t asid)
{
if (!(s->backend_cap & (0x1ULL << VHOST_BACKEND_F_IOTLB_BATCH))) {
return 0;
@@ -237,7 +237,7 @@ static int vhost_vdpa_dma_batch_end_once(VhostVDPAShared *s)
return 0;
}
- if (vhost_vdpa_dma_batch_end(s, 0)) {
+ if (vhost_vdpa_dma_batch_end(s, asid)) {
s->iotlb_batch_begin_sent = false;
}
@@ -248,7 +248,7 @@ static void vhost_vdpa_listener_commit(MemoryListener *listener)
{
VhostVDPAShared *s = container_of(listener, VhostVDPAShared, listener);
- vhost_vdpa_dma_batch_end_once(s);
+ vhost_vdpa_dma_batch_end_once(s, VHOST_VDPA_GUEST_PA_ASID);
}
static void vhost_vdpa_iommu_map_notify(IOMMUNotifier *n, IOMMUTLBEntry *iotlb)
@@ -423,7 +423,7 @@ static void vhost_vdpa_listener_region_add(MemoryListener *listener,
iova = mem_region.iova;
}
- vhost_vdpa_dma_batch_begin_once(s);
+ vhost_vdpa_dma_batch_begin_once(s, VHOST_VDPA_GUEST_PA_ASID);
ret = vhost_vdpa_dma_map(s, VHOST_VDPA_GUEST_PA_ASID, iova,
int128_get64(llsize), vaddr, section->readonly);
if (ret) {
@@ -505,7 +505,7 @@ static void vhost_vdpa_listener_region_del(MemoryListener *listener,
iova = result->iova;
vhost_iova_tree_remove(s->iova_tree, *result);
}
- vhost_vdpa_dma_batch_begin_once(s);
+ vhost_vdpa_dma_batch_begin_once(s, VHOST_VDPA_GUEST_PA_ASID);
/*
* The unmap ioctl doesn't accept a full 64-bit. need to check it
*/
@@ -1383,10 +1383,10 @@ static void *vhost_vdpa_load_map(void *opaque)
msg->iotlb.size);
break;
case VHOST_IOTLB_BATCH_BEGIN:
- vhost_vdpa_dma_batch_begin_once(shared);
+ vhost_vdpa_dma_batch_begin_once(shared, msg->asid);
break;
case VHOST_IOTLB_BATCH_END:
- vhost_vdpa_dma_batch_end_once(shared);
+ vhost_vdpa_dma_batch_end_once(shared, msg->asid);
break;
default:
error_report("Invalid IOTLB msg type %d", msg->iotlb.type);
Will allow other callers to specifcy asid when calling the dma_batch API. Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com> --- hw/virtio/vhost-vdpa.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)