aboutsummaryrefslogtreecommitdiff
path: root/lib/dma.c
diff options
context:
space:
mode:
authorThanos Makatos <thanos.makatos@nutanix.com>2021-11-30 14:40:18 +0000
committerGitHub <noreply@github.com>2021-11-30 14:40:18 +0000
commitf2dd09649e31540996fa4e9497693d1b27bc88fe (patch)
tree004db91ebc9cfa68af9bd5f2ff96fc11fabcb6db /lib/dma.c
parent02174878b1f7a70d3ac09c50c12799df0a1f9406 (diff)
downloadlibvfio-user-f2dd09649e31540996fa4e9497693d1b27bc88fe.zip
libvfio-user-f2dd09649e31540996fa4e9497693d1b27bc88fe.tar.gz
libvfio-user-f2dd09649e31540996fa4e9497693d1b27bc88fe.tar.bz2
introduce device quiesce callback (#609)
Signed-off-by: Thanos Makatos <thanos.makatos@nutanix.com> Reviewed-by: John Leon <john.levon@nutanix.com>
Diffstat (limited to 'lib/dma.c')
-rw-r--r--lib/dma.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/lib/dma.c b/lib/dma.c
index eed4370..cf63177 100644
--- a/lib/dma.c
+++ b/lib/dma.c
@@ -156,7 +156,6 @@ MOCK_DEFINE(dma_controller_remove_region)(dma_controller_t *dma,
{
int idx;
dma_memory_region_t *region;
- int err;
assert(dma != NULL);
@@ -167,13 +166,8 @@ MOCK_DEFINE(dma_controller_remove_region)(dma_controller_t *dma,
continue;
}
- err = dma_unregister == NULL ? 0 : dma_unregister(data, &region->info);
- if (err != 0) {
- err = errno;
- vfu_log(dma->vfu_ctx, LOG_ERR,
- "failed to dma_unregister() DMA region [%p, %p): %m",
- region->info.iova.iov_base, iov_end(&region->info.iova));
- return ERROR_INT(err);
+ if (dma_unregister != NULL) {
+ dma_unregister(data, &region->info);
}
assert(region->refcnt == 0);
@@ -201,7 +195,6 @@ dma_controller_remove_all_regions(dma_controller_t *dma,
for (i = 0; i < dma->nregions; i++) {
dma_memory_region_t *region = &dma->regions[i];
- int err;
vfu_log(dma->vfu_ctx, LOG_DEBUG, "removing DMA region "
"iova=[%p, %p) vaddr=%p mapping=[%p, %p)",
@@ -209,12 +202,8 @@ dma_controller_remove_all_regions(dma_controller_t *dma,
region->info.vaddr,
region->info.mapping.iov_base, iov_end(&region->info.mapping));
- err = dma_unregister == NULL ? 0 : dma_unregister(data, &region->info);
- if (err != 0) {
- err = errno;
- vfu_log(dma->vfu_ctx, LOG_ERR,
- "failed to dma_unregister() DMA region [%p, %p): %m",
- region->info.iova.iov_base, iov_end(&region->info.iova));
+ if (dma_unregister != NULL) {
+ dma_unregister(data, &region->info);
}
if (region->info.vaddr != NULL) {