[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 29/40] vdpa: expose API vhost_vdpa_dma_batch_once
From: |
Si-Wei Liu |
Subject: |
[PATCH 29/40] vdpa: expose API vhost_vdpa_dma_batch_once |
Date: |
Thu, 7 Dec 2023 09:39:42 -0800 |
So that the batching API can be called from other file
externally than the local.
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
---
hw/virtio/vhost-vdpa.c | 21 +++++++++++++++------
include/hw/virtio/vhost-vdpa.h | 3 +++
2 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
index b7896a8..68dc01b 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -187,7 +187,7 @@ static bool vhost_vdpa_map_batch_begin(VhostVDPAShared *s,
uint32_t asid)
return true;
}
-static int vhost_vdpa_dma_batch_begin_once(VhostVDPAShared *s, uint32_t asid)
+int vhost_vdpa_dma_batch_begin_once(VhostVDPAShared *s, uint32_t asid)
{
if (!(s->backend_cap & (0x1ULL << VHOST_BACKEND_F_IOTLB_BATCH))) {
return 0;
@@ -237,7 +237,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, uint32_t asid)
+int vhost_vdpa_dma_batch_end_once(VhostVDPAShared *s, uint32_t asid)
{
if (!(s->backend_cap & (0x1ULL << VHOST_BACKEND_F_IOTLB_BATCH))) {
return 0;
@@ -436,7 +436,12 @@ static void vhost_vdpa_listener_region_add(MemoryListener
*listener,
iova = mem_region.iova;
}
- vhost_vdpa_dma_batch_begin_once(s, VHOST_VDPA_GUEST_PA_ASID);
+ ret = vhost_vdpa_dma_batch_begin_once(s, VHOST_VDPA_GUEST_PA_ASID);
+ if (unlikely(ret)) {
+ error_report("Can't batch mapping on asid 0 (%p)", s);
+ goto fail_map;
+ }
+
ret = vhost_vdpa_dma_map(s, VHOST_VDPA_GUEST_PA_ASID, iova,
int128_get64(llsize), vaddr, section->readonly);
if (ret) {
@@ -518,7 +523,11 @@ 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_GUEST_PA_ASID);
+ ret = vhost_vdpa_dma_batch_begin_once(s, VHOST_VDPA_GUEST_PA_ASID);
+ if (ret) {
+ error_report("Can't batch mapping on asid 0 (%p)", s);
+ }
+
/*
* The unmap ioctl doesn't accept a full 64-bit. need to check it
*/
@@ -1396,10 +1405,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, msg->asid);
+ r = vhost_vdpa_dma_batch_begin_once(shared, msg->asid);
break;
case VHOST_IOTLB_BATCH_END:
- vhost_vdpa_dma_batch_end_once(shared, msg->asid);
+ r = vhost_vdpa_dma_batch_end_once(shared, msg->asid);
break;
default:
error_report("Invalid IOTLB msg type %d", msg->iotlb.type);
diff --git a/include/hw/virtio/vhost-vdpa.h b/include/hw/virtio/vhost-vdpa.h
index 219316f..aa13679 100644
--- a/include/hw/virtio/vhost-vdpa.h
+++ b/include/hw/virtio/vhost-vdpa.h
@@ -106,6 +106,9 @@ int vhost_vdpa_dma_map(VhostVDPAShared *s, uint32_t asid,
hwaddr iova,
hwaddr size, void *vaddr, bool readonly);
int vhost_vdpa_dma_unmap(VhostVDPAShared *s, uint32_t asid, hwaddr iova,
hwaddr size);
+int vhost_vdpa_dma_batch_begin_once(VhostVDPAShared *s, uint32_t asid);
+int vhost_vdpa_dma_batch_end_once(VhostVDPAShared *s, uint32_t asid);
+
int vhost_vdpa_load_setup(VhostVDPAShared *s, AddressSpace *dma_as);
int vhost_vdpa_load_cleanup(VhostVDPAShared *s, bool vhost_will_start);
--
1.8.3.1
- [PATCH 21/40] vdpa: vhost_vdpa_dma_batch_end_once rename, (continued)
- [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, 2023/12/07
- [PATCH 29/40] vdpa: expose API vhost_vdpa_dma_batch_once,
Si-Wei Liu <=
- [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