Will allow other callers to specifcy asid when calling the dma_batch API. Signed-off-by: Si-Wei Liu <si-wei....@oracle.com> --- hw/virtio/vhost-vdpa.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c index e0137f0..d3f5721 100644 --- a/hw/virtio/vhost-vdpa.c +++ b/hw/virtio/vhost-vdpa.c @@ -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); -- 1.8.3.1