From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Fam Zheng" <fam@euphon.net>,
qemu-block@nongnu.org, "Tingting Mao" <timao@redhat.com>,
"Auger Eric" <eric.auger@redhat.com>,
"Hanna Reitz" <hreitz@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: [PATCH 9/9] block/nvme: Only report VFIO error on failed retry
Date: Tue, 24 Aug 2021 16:11:42 +0200 [thread overview]
Message-ID: <20210824141142.1165291-10-philmd@redhat.com> (raw)
In-Reply-To: <20210824141142.1165291-1-philmd@redhat.com>
We expect the first qemu_vfio_dma_map() to fail (indicating
DMA mappings exhaustion, see commit 15a730e7a3a). Do not
report the first failure as error, since we are going to
flush the mappings and retry.
This removes spurious error message displayed on the monitor:
(qemu) c
(qemu) qemu-kvm: VFIO_MAP_DMA failed: No space left on device
(qemu) info status
VM status: running
Reported-by: Tingting Mao <timao@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
block/nvme.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/block/nvme.c b/block/nvme.c
index 80546b0babd..abfe305baf2 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -1019,6 +1019,7 @@ static coroutine_fn int nvme_cmd_map_qiov(BlockDriverState *bs, NvmeCmd *cmd,
uint64_t *pagelist = req->prp_list_page;
int i, j, r;
int entries = 0;
+ Error *local_err = NULL, **errp = NULL;
assert(qiov->size);
assert(QEMU_IS_ALIGNED(qiov->size, s->page_size));
@@ -1031,7 +1032,7 @@ static coroutine_fn int nvme_cmd_map_qiov(BlockDriverState *bs, NvmeCmd *cmd,
try_map:
r = qemu_vfio_dma_map(s->vfio,
qiov->iov[i].iov_base,
- len, true, &iova, NULL);
+ len, true, &iova, errp);
if (r == -ENOSPC) {
/*
* In addition to the -ENOMEM error, the VFIO_IOMMU_MAP_DMA
@@ -1066,6 +1067,8 @@ try_map:
goto fail;
}
}
+ errp = &local_err;
+
goto try_map;
}
if (r) {
@@ -1109,6 +1112,9 @@ fail:
* because they are already mapped before calling this function; for
* temporary mappings, a later nvme_cmd_(un)map_qiov will reclaim by
* calling qemu_vfio_dma_reset_temporary when necessary. */
+ if (local_err) {
+ error_reportf_err(local_err, "Cannot map buffer for DMA: ");
+ }
return r;
}
--
2.31.1
next prev parent reply other threads:[~2021-08-24 14:22 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-24 14:11 [PATCH 0/9] block/nvme: Rework error reporting Philippe Mathieu-Daudé
2021-08-24 14:11 ` [PATCH 1/9] block/nvme: Use safer trace format string Philippe Mathieu-Daudé
2021-08-25 11:25 ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 2/9] block/nvme: Have nvme_create_queue_pair() report errors consistently Philippe Mathieu-Daudé
2021-08-25 11:24 ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 3/9] util/vfio-helpers: Let qemu_vfio_verify_mappings() use error_report() Philippe Mathieu-Daudé
2021-08-24 14:11 ` [PATCH 4/9] util/vfio-helpers: Replace qemu_mutex_lock() calls with QEMU_LOCK_GUARD Philippe Mathieu-Daudé
2021-08-25 11:57 ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 5/9] util/vfio-helpers: Remove unreachable code in qemu_vfio_dma_map() Philippe Mathieu-Daudé
2021-08-25 11:53 ` Klaus Jensen
2021-08-25 11:55 ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 6/9] util/vfio-helpers: Pass Error handle to qemu_vfio_dma_map() Philippe Mathieu-Daudé
2021-08-24 14:11 ` [PATCH 7/9] util/vfio-helpers: Have qemu_vfio_dma_map() propagate Error Philippe Mathieu-Daudé
2021-08-25 11:34 ` Klaus Jensen
2021-08-25 13:08 ` Philippe Mathieu-Daudé
2021-08-25 14:53 ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 8/9] util/vfio-helpers: Let qemu_vfio_do_mapping() " Philippe Mathieu-Daudé
2021-08-24 14:11 ` Philippe Mathieu-Daudé [this message]
2021-08-25 12:18 ` [PATCH 9/9] block/nvme: Only report VFIO error on failed retry Klaus Jensen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210824141142.1165291-10-philmd@redhat.com \
--to=philmd@redhat.com \
--cc=eric.auger@redhat.com \
--cc=fam@euphon.net \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=timao@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).