* [PATCH 0/9] util/vfio-helpers: Improve debugging experience
@ 2020-10-14 11:52 Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 1/9] util/vfio-helpers: Improve reporting unsupported IOMMU type Philippe Mathieu-Daudé
` (9 more replies)
0 siblings, 10 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
A bunch of boring patches that have been proven helpful
while debugging.
Philippe Mathieu-Daudé (9):
util/vfio-helpers: Improve reporting unsupported IOMMU type
util/vfio-helpers: Trace PCI I/O config accesses
util/vfio-helpers: Trace PCI BAR region info
util/vfio-helpers: Trace where BARs are mapped
util/vfio-helpers: Improve DMA trace events
util/vfio-helpers: Convert vfio_dump_mapping to trace events
util/vfio-helpers: Let qemu_vfio_dma_map() propagate Error
util/vfio-helpers: Let qemu_vfio_do_mapping() propagate Error
util/vfio-helpers: Let qemu_vfio_verify_mappings() use error_report()
include/qemu/vfio-helpers.h | 2 +-
block/nvme.c | 14 ++++----
util/vfio-helpers.c | 66 +++++++++++++++++++++----------------
util/trace-events | 10 ++++--
4 files changed, 54 insertions(+), 38 deletions(-)
--
2.26.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/9] util/vfio-helpers: Improve reporting unsupported IOMMU type
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 2/9] util/vfio-helpers: Trace PCI I/O config accesses Philippe Mathieu-Daudé
` (8 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
Change the confuse "VFIO IOMMU check failed" error message by
the explicit "VFIO IOMMU Type1 is not supported" once.
Example on POWER:
$ qemu-system-ppc64 -drive if=none,id=nvme0,file=nvme://0001:01:00.0/1,format=raw
qemu-system-ppc64: -drive if=none,id=nvme0,file=nvme://0001:01:00.0/1,format=raw: VFIO IOMMU Type1 is not supported
Suggested-by: Alex Williamson <alex.williamson@redhat.com>
Reviewed-by: Fam Zheng <fam@euphon.net>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
util/vfio-helpers.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index c469beb0616..14a549510fe 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -300,7 +300,7 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s, const char *device,
}
if (!ioctl(s->container, VFIO_CHECK_EXTENSION, VFIO_TYPE1_IOMMU)) {
- error_setg_errno(errp, errno, "VFIO IOMMU check failed");
+ error_setg_errno(errp, errno, "VFIO IOMMU Type1 is not supported");
ret = -EINVAL;
goto fail_container;
}
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 2/9] util/vfio-helpers: Trace PCI I/O config accesses
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 1/9] util/vfio-helpers: Improve reporting unsupported IOMMU type Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 3/9] util/vfio-helpers: Trace PCI BAR region info Philippe Mathieu-Daudé
` (7 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
We sometime get kernel panic with some devices on Aarch64
hosts. Alex Williamson suggests it might be broken PCIe
root complex. Add trace event to record the latest I/O
access before crashing. In case, assert our accesses are
aligned.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Cc: Alex Williamson <alex.williamson@redhat.com>
---
util/vfio-helpers.c | 8 ++++++++
util/trace-events | 2 ++
2 files changed, 10 insertions(+)
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index 14a549510fe..1d4efafcaa4 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -227,6 +227,10 @@ static int qemu_vfio_pci_read_config(QEMUVFIOState *s, void *buf,
{
int ret;
+ trace_qemu_vfio_pci_read_config(buf, ofs, size,
+ s->config_region_info.offset,
+ s->config_region_info.size);
+ assert(QEMU_IS_ALIGNED(s->config_region_info.offset + ofs, size));
do {
ret = pread(s->device, buf, size, s->config_region_info.offset + ofs);
} while (ret == -1 && errno == EINTR);
@@ -237,6 +241,10 @@ static int qemu_vfio_pci_write_config(QEMUVFIOState *s, void *buf, int size, int
{
int ret;
+ trace_qemu_vfio_pci_write_config(buf, ofs, size,
+ s->config_region_info.offset,
+ s->config_region_info.size);
+ assert(QEMU_IS_ALIGNED(s->config_region_info.offset + ofs, size));
do {
ret = pwrite(s->device, buf, size, s->config_region_info.offset + ofs);
} while (ret == -1 && errno == EINTR);
diff --git a/util/trace-events b/util/trace-events
index 24c31803b01..c048f85f828 100644
--- a/util/trace-events
+++ b/util/trace-events
@@ -85,3 +85,5 @@ qemu_vfio_new_mapping(void *s, void *host, size_t size, int index, uint64_t iova
qemu_vfio_do_mapping(void *s, void *host, size_t size, uint64_t iova) "s %p host %p size 0x%zx iova 0x%"PRIx64
qemu_vfio_dma_map(void *s, void *host, size_t size, bool temporary, uint64_t *iova) "s %p host %p size 0x%zx temporary %d iova %p"
qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p"
+qemu_vfio_pci_read_config(void *buf, int ofs, int size, uint64_t region_ofs, uint64_t region_size) "read cfg ptr %p ofs 0x%x size %d (region ofs 0x%"PRIx64" size %"PRId64")"
+qemu_vfio_pci_write_config(void *buf, int ofs, int size, uint64_t region_ofs, uint64_t region_size) "write cfg ptr %p ofs 0x%x size %d (region ofs 0x%"PRIx64" size %"PRId64")"
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 3/9] util/vfio-helpers: Trace PCI BAR region info
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 1/9] util/vfio-helpers: Improve reporting unsupported IOMMU type Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 2/9] util/vfio-helpers: Trace PCI I/O config accesses Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 12:23 ` Fam Zheng
2020-10-14 11:52 ` [PATCH 4/9] util/vfio-helpers: Trace where BARs are mapped Philippe Mathieu-Daudé
` (6 subsequent siblings)
9 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
For debug purpose, trace BAR regions info.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
util/vfio-helpers.c | 8 ++++++++
util/trace-events | 1 +
2 files changed, 9 insertions(+)
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index 1d4efafcaa4..cd6287c3a98 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -136,6 +136,7 @@ static inline void assert_bar_index_valid(QEMUVFIOState *s, int index)
static int qemu_vfio_pci_init_bar(QEMUVFIOState *s, int index, Error **errp)
{
+ g_autofree char *barname = NULL;
assert_bar_index_valid(s, index);
s->bar_region_info[index] = (struct vfio_region_info) {
.index = VFIO_PCI_BAR0_REGION_INDEX + index,
@@ -145,6 +146,10 @@ static int qemu_vfio_pci_init_bar(QEMUVFIOState *s, int index, Error **errp)
error_setg_errno(errp, errno, "Failed to get BAR region info");
return -errno;
}
+ barname = g_strdup_printf("bar[%d]", index);
+ trace_qemu_vfio_region_info(barname, s->bar_region_info[index].offset,
+ s->bar_region_info[index].size,
+ s->bar_region_info[index].cap_offset);
return 0;
}
@@ -416,6 +421,9 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s, const char *device,
ret = -errno;
goto fail;
}
+ trace_qemu_vfio_region_info("config", s->config_region_info.offset,
+ s->config_region_info.size,
+ s->config_region_info.cap_offset);
for (i = 0; i < ARRAY_SIZE(s->bar_region_info); i++) {
ret = qemu_vfio_pci_init_bar(s, i, errp);
diff --git a/util/trace-events b/util/trace-events
index c048f85f828..4d40c74a21f 100644
--- a/util/trace-events
+++ b/util/trace-events
@@ -87,3 +87,4 @@ qemu_vfio_dma_map(void *s, void *host, size_t size, bool temporary, uint64_t *io
qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p"
qemu_vfio_pci_read_config(void *buf, int ofs, int size, uint64_t region_ofs, uint64_t region_size) "read cfg ptr %p ofs 0x%x size %d (region ofs 0x%"PRIx64" size %"PRId64")"
qemu_vfio_pci_write_config(void *buf, int ofs, int size, uint64_t region_ofs, uint64_t region_size) "write cfg ptr %p ofs 0x%x size %d (region ofs 0x%"PRIx64" size %"PRId64")"
+qemu_vfio_region_info(const char *desc, uint64_t offset, uint64_t size, uint32_t cap_offset) "region '%s' ofs 0x%"PRIx64" size %"PRId64" cap_ofs %"PRId32
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 4/9] util/vfio-helpers: Trace where BARs are mapped
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2020-10-14 11:52 ` [PATCH 3/9] util/vfio-helpers: Trace PCI BAR region info Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 5/9] util/vfio-helpers: Improve DMA trace events Philippe Mathieu-Daudé
` (5 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
For debugging purpose, trace where a BAR is mapped.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
util/vfio-helpers.c | 2 ++
util/trace-events | 1 +
2 files changed, 3 insertions(+)
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index cd6287c3a98..278c54902e7 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -166,6 +166,8 @@ void *qemu_vfio_pci_map_bar(QEMUVFIOState *s, int index,
p = mmap(NULL, MIN(size, s->bar_region_info[index].size - offset),
prot, MAP_SHARED,
s->device, s->bar_region_info[index].offset + offset);
+ trace_qemu_vfio_pci_map_bar(index, s->bar_region_info[index].offset ,
+ size, offset, p);
if (p == MAP_FAILED) {
error_setg_errno(errp, errno, "Failed to map BAR region");
p = NULL;
diff --git a/util/trace-events b/util/trace-events
index 4d40c74a21f..50652761a58 100644
--- a/util/trace-events
+++ b/util/trace-events
@@ -88,3 +88,4 @@ qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p"
qemu_vfio_pci_read_config(void *buf, int ofs, int size, uint64_t region_ofs, uint64_t region_size) "read cfg ptr %p ofs 0x%x size %d (region ofs 0x%"PRIx64" size %"PRId64")"
qemu_vfio_pci_write_config(void *buf, int ofs, int size, uint64_t region_ofs, uint64_t region_size) "write cfg ptr %p ofs 0x%x size %d (region ofs 0x%"PRIx64" size %"PRId64")"
qemu_vfio_region_info(const char *desc, uint64_t offset, uint64_t size, uint32_t cap_offset) "region '%s' ofs 0x%"PRIx64" size %"PRId64" cap_ofs %"PRId32
+qemu_vfio_pci_map_bar(int index, uint64_t region_ofs, uint64_t region_size, int ofs, void *host) "map region bar#%d ofs 0x%"PRIx64" size %"PRId64" ofs %d host %p"
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 5/9] util/vfio-helpers: Improve DMA trace events
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2020-10-14 11:52 ` [PATCH 4/9] util/vfio-helpers: Trace where BARs are mapped Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 6/9] util/vfio-helpers: Convert vfio_dump_mapping to " Philippe Mathieu-Daudé
` (4 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
For debugging purpose, trace where DMA regions are mapped.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
util/vfio-helpers.c | 3 ++-
util/trace-events | 5 +++--
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index 278c54902e7..c24a510df82 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -627,7 +627,7 @@ static int qemu_vfio_do_mapping(QEMUVFIOState *s, void *host, size_t size,
.vaddr = (uintptr_t)host,
.size = size,
};
- trace_qemu_vfio_do_mapping(s, host, size, iova);
+ trace_qemu_vfio_do_mapping(s, host, iova, size);
if (ioctl(s->container, VFIO_IOMMU_MAP_DMA, &dma_map)) {
error_report("VFIO_MAP_DMA failed: %s", strerror(errno));
@@ -783,6 +783,7 @@ int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
}
}
}
+ trace_qemu_vfio_dma_mapped(s, host, iova0, size);
if (iova) {
*iova = iova0;
}
diff --git a/util/trace-events b/util/trace-events
index 50652761a58..8598066acdb 100644
--- a/util/trace-events
+++ b/util/trace-events
@@ -82,8 +82,9 @@ qemu_vfio_ram_block_added(void *s, void *p, size_t size) "s %p host %p size 0x%z
qemu_vfio_ram_block_removed(void *s, void *p, size_t size) "s %p host %p size 0x%zx"
qemu_vfio_find_mapping(void *s, void *p) "s %p host %p"
qemu_vfio_new_mapping(void *s, void *host, size_t size, int index, uint64_t iova) "s %p host %p size 0x%zx index %d iova 0x%"PRIx64
-qemu_vfio_do_mapping(void *s, void *host, size_t size, uint64_t iova) "s %p host %p size 0x%zx iova 0x%"PRIx64
-qemu_vfio_dma_map(void *s, void *host, size_t size, bool temporary, uint64_t *iova) "s %p host %p size 0x%zx temporary %d iova %p"
+qemu_vfio_do_mapping(void *s, void *host, uint64_t iova, size_t size) "s %p host %p <-> iova 0x%"PRIx64 " size 0x%zx"
+qemu_vfio_dma_map(void *s, void *host, size_t size, bool temporary, uint64_t *iova) "s %p host %p size 0x%zx temporary %d &iova %p"
+qemu_vfio_dma_mapped(void *s, void *host, uint64_t iova, size_t size) "s %p host %p <-> iova 0x%"PRIx64" size 0x%zx"
qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p"
qemu_vfio_pci_read_config(void *buf, int ofs, int size, uint64_t region_ofs, uint64_t region_size) "read cfg ptr %p ofs 0x%x size %d (region ofs 0x%"PRIx64" size %"PRId64")"
qemu_vfio_pci_write_config(void *buf, int ofs, int size, uint64_t region_ofs, uint64_t region_size) "write cfg ptr %p ofs 0x%x size %d (region ofs 0x%"PRIx64" size %"PRId64")"
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 6/9] util/vfio-helpers: Convert vfio_dump_mapping to trace events
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
` (4 preceding siblings ...)
2020-10-14 11:52 ` [PATCH 5/9] util/vfio-helpers: Improve DMA trace events Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 7/9] util/vfio-helpers: Let qemu_vfio_dma_map() propagate Error Philippe Mathieu-Daudé
` (3 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
The QEMU_VFIO_DEBUG definition is only modifiable at build-time.
Trace events can be enabled at run-time. As we prefer the latter,
convert qemu_vfio_dump_mappings() to use trace events instead
of fprintf().
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
util/vfio-helpers.c | 19 ++++---------------
util/trace-events | 1 +
2 files changed, 5 insertions(+), 15 deletions(-)
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index c24a510df82..73f7bfa7540 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -521,23 +521,12 @@ QEMUVFIOState *qemu_vfio_open_pci(const char *device, Error **errp)
return s;
}
-static void qemu_vfio_dump_mapping(IOVAMapping *m)
-{
- if (QEMU_VFIO_DEBUG) {
- printf(" vfio mapping %p %" PRIx64 " to %" PRIx64 "\n", m->host,
- (uint64_t)m->size, (uint64_t)m->iova);
- }
-}
-
static void qemu_vfio_dump_mappings(QEMUVFIOState *s)
{
- int i;
-
- if (QEMU_VFIO_DEBUG) {
- printf("vfio mappings\n");
- for (i = 0; i < s->nr_mappings; ++i) {
- qemu_vfio_dump_mapping(&s->mappings[i]);
- }
+ for (int i = 0; i < s->nr_mappings; ++i) {
+ trace_qemu_vfio_dump_mapping(s->mappings[i].host,
+ s->mappings[i].iova,
+ s->mappings[i].size);
}
}
diff --git a/util/trace-events b/util/trace-events
index 8598066acdb..7faad2a718c 100644
--- a/util/trace-events
+++ b/util/trace-events
@@ -80,6 +80,7 @@ qemu_mutex_unlock(void *mutex, const char *file, const int line) "released mutex
qemu_vfio_dma_reset_temporary(void *s) "s %p"
qemu_vfio_ram_block_added(void *s, void *p, size_t size) "s %p host %p size 0x%zx"
qemu_vfio_ram_block_removed(void *s, void *p, size_t size) "s %p host %p size 0x%zx"
+qemu_vfio_dump_mapping(void *host, uint64_t iova, size_t size) "vfio mapping %p to iova 0x%08" PRIx64 " size 0x%zx"
qemu_vfio_find_mapping(void *s, void *p) "s %p host %p"
qemu_vfio_new_mapping(void *s, void *host, size_t size, int index, uint64_t iova) "s %p host %p size 0x%zx index %d iova 0x%"PRIx64
qemu_vfio_do_mapping(void *s, void *host, uint64_t iova, size_t size) "s %p host %p <-> iova 0x%"PRIx64 " size 0x%zx"
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 7/9] util/vfio-helpers: Let qemu_vfio_dma_map() propagate Error
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
` (5 preceding siblings ...)
2020-10-14 11:52 ` [PATCH 6/9] util/vfio-helpers: Convert vfio_dump_mapping to " Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 8/9] util/vfio-helpers: Let qemu_vfio_do_mapping() " Philippe Mathieu-Daudé
` (2 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
Currently qemu_vfio_dma_map() displays errors on stderr.
When using management interface, this information is simply
lost. Pass qemu_vfio_dma_map() an Error* argument so it can
propagate the error to callers.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
include/qemu/vfio-helpers.h | 2 +-
block/nvme.c | 14 +++++++-------
util/vfio-helpers.c | 12 +++++++-----
3 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/include/qemu/vfio-helpers.h b/include/qemu/vfio-helpers.h
index 4491c8e1a6e..bde9495b254 100644
--- a/include/qemu/vfio-helpers.h
+++ b/include/qemu/vfio-helpers.h
@@ -18,7 +18,7 @@ typedef struct QEMUVFIOState QEMUVFIOState;
QEMUVFIOState *qemu_vfio_open_pci(const char *device, Error **errp);
void qemu_vfio_close(QEMUVFIOState *s);
int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
- bool temporary, uint64_t *iova_list);
+ bool temporary, uint64_t *iova_list, Error **errp);
int qemu_vfio_dma_reset_temporary(QEMUVFIOState *s);
void qemu_vfio_dma_unmap(QEMUVFIOState *s, void *host);
void *qemu_vfio_pci_map_bar(QEMUVFIOState *s, int index,
diff --git a/block/nvme.c b/block/nvme.c
index b48f6f25881..5f662c55bbe 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -167,9 +167,9 @@ static void nvme_init_queue(BDRVNVMeState *s, NVMeQueue *q,
return;
}
memset(q->queue, 0, bytes);
- r = qemu_vfio_dma_map(s->vfio, q->queue, bytes, false, &q->iova);
+ r = qemu_vfio_dma_map(s->vfio, q->queue, bytes, false, &q->iova, errp);
if (r) {
- error_setg(errp, "Cannot map queue");
+ error_prepend(errp, "Cannot map queue: ");
}
}
@@ -223,7 +223,7 @@ static NVMeQueuePair *nvme_create_queue_pair(BDRVNVMeState *s,
q->completion_bh = aio_bh_new(aio_context, nvme_process_completion_bh, q);
r = qemu_vfio_dma_map(s->vfio, q->prp_list_pages,
s->page_size * NVME_NUM_REQS,
- false, &prp_list_iova);
+ false, &prp_list_iova, errp);
if (r) {
goto fail;
}
@@ -514,9 +514,9 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp)
error_setg(errp, "Cannot allocate buffer for identify response");
goto out;
}
- r = qemu_vfio_dma_map(s->vfio, id, sizeof(*id), true, &iova);
+ r = qemu_vfio_dma_map(s->vfio, id, sizeof(*id), true, &iova, errp);
if (r) {
- error_setg(errp, "Cannot map buffer for DMA");
+ error_prepend(errp, "Cannot map buffer for DMA: ");
goto out;
}
@@ -989,7 +989,7 @@ try_map:
r = qemu_vfio_dma_map(s->vfio,
qiov->iov[i].iov_base,
qiov->iov[i].iov_len,
- true, &iova);
+ true, &iova, NULL);
if (r == -ENOMEM && retry) {
retry = false;
trace_nvme_dma_flush_queue_wait(s);
@@ -1436,7 +1436,7 @@ static void nvme_register_buf(BlockDriverState *bs, void *host, size_t size)
int ret;
BDRVNVMeState *s = bs->opaque;
- ret = qemu_vfio_dma_map(s->vfio, host, size, false, NULL);
+ ret = qemu_vfio_dma_map(s->vfio, host, size, false, NULL, NULL);
if (ret) {
/* FIXME: we may run out of IOVA addresses after repeated
* bdrv_register_buf/bdrv_unregister_buf, because nvme_vfio_dma_unmap
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index 73f7bfa7540..c03fe0b7156 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -462,7 +462,7 @@ static void qemu_vfio_ram_block_added(RAMBlockNotifier *n,
{
QEMUVFIOState *s = container_of(n, QEMUVFIOState, ram_notifier);
trace_qemu_vfio_ram_block_added(s, host, size);
- qemu_vfio_dma_map(s, host, size, false, NULL);
+ qemu_vfio_dma_map(s, host, size, false, NULL, NULL);
}
static void qemu_vfio_ram_block_removed(RAMBlockNotifier *n,
@@ -477,6 +477,7 @@ static void qemu_vfio_ram_block_removed(RAMBlockNotifier *n,
static int qemu_vfio_init_ramblock(RAMBlock *rb, void *opaque)
{
+ Error *local_err = NULL;
void *host_addr = qemu_ram_get_host_addr(rb);
ram_addr_t length = qemu_ram_get_used_length(rb);
int ret;
@@ -485,10 +486,11 @@ static int qemu_vfio_init_ramblock(RAMBlock *rb, void *opaque)
if (!host_addr) {
return 0;
}
- ret = qemu_vfio_dma_map(s, host_addr, length, false, NULL);
+ ret = qemu_vfio_dma_map(s, host_addr, length, false, NULL, &local_err);
if (ret) {
- fprintf(stderr, "qemu_vfio_init_ramblock: failed %p %" PRId64 "\n",
- host_addr, (uint64_t)length);
+ error_reportf_err(local_err,
+ "qemu_vfio_init_ramblock: failed %p %" PRId64 ":",
+ host_addr, (uint64_t)length);
}
return 0;
}
@@ -724,7 +726,7 @@ qemu_vfio_find_temp_iova(QEMUVFIOState *s, size_t size, uint64_t *iova)
* mapping status within this area is not allowed).
*/
int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
- bool temporary, uint64_t *iova)
+ bool temporary, uint64_t *iova, Error **errp)
{
int ret = 0;
int index;
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 8/9] util/vfio-helpers: Let qemu_vfio_do_mapping() propagate Error
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
` (6 preceding siblings ...)
2020-10-14 11:52 ` [PATCH 7/9] util/vfio-helpers: Let qemu_vfio_dma_map() propagate Error Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 9/9] util/vfio-helpers: Let qemu_vfio_verify_mappings() use error_report() Philippe Mathieu-Daudé
2020-10-14 12:34 ` [PATCH 0/9] util/vfio-helpers: Improve debugging experience Fam Zheng
9 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
Pass qemu_vfio_do_mapping() an Error* argument so it can propagate
any error to callers. Replace error_report() which only report
to the monitor by the more generic error_setg_errno().
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
util/vfio-helpers.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index c03fe0b7156..2c4598d7faa 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -609,7 +609,7 @@ static IOVAMapping *qemu_vfio_add_mapping(QEMUVFIOState *s,
/* Do the DMA mapping with VFIO. */
static int qemu_vfio_do_mapping(QEMUVFIOState *s, void *host, size_t size,
- uint64_t iova)
+ uint64_t iova, Error **errp)
{
struct vfio_iommu_type1_dma_map dma_map = {
.argsz = sizeof(dma_map),
@@ -621,7 +621,7 @@ static int qemu_vfio_do_mapping(QEMUVFIOState *s, void *host, size_t size,
trace_qemu_vfio_do_mapping(s, host, iova, size);
if (ioctl(s->container, VFIO_IOMMU_MAP_DMA, &dma_map)) {
- error_report("VFIO_MAP_DMA failed: %s", strerror(errno));
+ error_setg_errno(errp, errno, "VFIO_MAP_DMA failed");
return -errno;
}
return 0;
@@ -757,7 +757,7 @@ int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
goto out;
}
assert(qemu_vfio_verify_mappings(s));
- ret = qemu_vfio_do_mapping(s, host, size, iova0);
+ ret = qemu_vfio_do_mapping(s, host, size, iova0, errp);
if (ret) {
qemu_vfio_undo_mapping(s, mapping, NULL);
goto out;
@@ -768,7 +768,7 @@ int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
ret = -ENOMEM;
goto out;
}
- ret = qemu_vfio_do_mapping(s, host, size, iova0);
+ ret = qemu_vfio_do_mapping(s, host, size, iova0, errp);
if (ret) {
goto out;
}
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 9/9] util/vfio-helpers: Let qemu_vfio_verify_mappings() use error_report()
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
` (7 preceding siblings ...)
2020-10-14 11:52 ` [PATCH 8/9] util/vfio-helpers: Let qemu_vfio_do_mapping() " Philippe Mathieu-Daudé
@ 2020-10-14 11:52 ` Philippe Mathieu-Daudé
2020-10-14 12:34 ` [PATCH 0/9] util/vfio-helpers: Improve debugging experience Fam Zheng
9 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 11:52 UTC (permalink / raw)
To: qemu-devel
Cc: Fam Zheng, Kevin Wolf, qemu-block, Max Reitz, Alex Williamson,
Stefan Hajnoczi, Philippe Mathieu-Daudé
Instead of displaying the error on stderr, use error_report()
which also report to the monitor.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
util/vfio-helpers.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
index 2c4598d7faa..488ddfca2a9 100644
--- a/util/vfio-helpers.c
+++ b/util/vfio-helpers.c
@@ -661,13 +661,13 @@ static bool qemu_vfio_verify_mappings(QEMUVFIOState *s)
if (QEMU_VFIO_DEBUG) {
for (i = 0; i < s->nr_mappings - 1; ++i) {
if (!(s->mappings[i].host < s->mappings[i + 1].host)) {
- fprintf(stderr, "item %d not sorted!\n", i);
+ error_report("item %d not sorted!", i);
qemu_vfio_dump_mappings(s);
return false;
}
if (!(s->mappings[i].host + s->mappings[i].size <=
s->mappings[i + 1].host)) {
- fprintf(stderr, "item %d overlap with next!\n", i);
+ error_report("item %d overlap with next!", i);
qemu_vfio_dump_mappings(s);
return false;
}
--
2.26.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 3/9] util/vfio-helpers: Trace PCI BAR region info
2020-10-14 11:52 ` [PATCH 3/9] util/vfio-helpers: Trace PCI BAR region info Philippe Mathieu-Daudé
@ 2020-10-14 12:23 ` Fam Zheng
2020-10-14 12:42 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 15+ messages in thread
From: Fam Zheng @ 2020-10-14 12:23 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Kevin Wolf, Alex Williamson, Stefan Hajnoczi, qemu-block, Max Reitz
On Wed, 2020-10-14 at 13:52 +0200, Philippe Mathieu-Daudé wrote:
> For debug purpose, trace BAR regions info.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> util/vfio-helpers.c | 8 ++++++++
> util/trace-events | 1 +
> 2 files changed, 9 insertions(+)
>
> diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
> index 1d4efafcaa4..cd6287c3a98 100644
> --- a/util/vfio-helpers.c
> +++ b/util/vfio-helpers.c
> @@ -136,6 +136,7 @@ static inline void
> assert_bar_index_valid(QEMUVFIOState *s, int index)
>
> static int qemu_vfio_pci_init_bar(QEMUVFIOState *s, int index, Error
> **errp)
> {
> + g_autofree char *barname = NULL;
> assert_bar_index_valid(s, index);
> s->bar_region_info[index] = (struct vfio_region_info) {
> .index = VFIO_PCI_BAR0_REGION_INDEX + index,
> @@ -145,6 +146,10 @@ static int qemu_vfio_pci_init_bar(QEMUVFIOState
> *s, int index, Error **errp)
> error_setg_errno(errp, errno, "Failed to get BAR region
> info");
> return -errno;
> }
> + barname = g_strdup_printf("bar[%d]", index);
Where is barname freed?
Fam
> + trace_qemu_vfio_region_info(barname, s-
> >bar_region_info[index].offset,
> + s->bar_region_info[index].size,
> + s-
> >bar_region_info[index].cap_offset);
>
> return 0;
> }
> @@ -416,6 +421,9 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s,
> const char *device,
> ret = -errno;
> goto fail;
> }
> + trace_qemu_vfio_region_info("config", s-
> >config_region_info.offset,
> + s->config_region_info.size,
> + s->config_region_info.cap_offset);
>
> for (i = 0; i < ARRAY_SIZE(s->bar_region_info); i++) {
> ret = qemu_vfio_pci_init_bar(s, i, errp);
> diff --git a/util/trace-events b/util/trace-events
> index c048f85f828..4d40c74a21f 100644
> --- a/util/trace-events
> +++ b/util/trace-events
> @@ -87,3 +87,4 @@ qemu_vfio_dma_map(void *s, void *host, size_t size,
> bool temporary, uint64_t *io
> qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p"
> qemu_vfio_pci_read_config(void *buf, int ofs, int size, uint64_t
> region_ofs, uint64_t region_size) "read cfg ptr %p ofs 0x%x size %d
> (region ofs 0x%"PRIx64" size %"PRId64")"
> qemu_vfio_pci_write_config(void *buf, int ofs, int size, uint64_t
> region_ofs, uint64_t region_size) "write cfg ptr %p ofs 0x%x size %d
> (region ofs 0x%"PRIx64" size %"PRId64")"
> +qemu_vfio_region_info(const char *desc, uint64_t offset, uint64_t
> size, uint32_t cap_offset) "region '%s' ofs 0x%"PRIx64" size
> %"PRId64" cap_ofs %"PRId32
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 0/9] util/vfio-helpers: Improve debugging experience
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
` (8 preceding siblings ...)
2020-10-14 11:52 ` [PATCH 9/9] util/vfio-helpers: Let qemu_vfio_verify_mappings() use error_report() Philippe Mathieu-Daudé
@ 2020-10-14 12:34 ` Fam Zheng
2020-10-14 12:42 ` Philippe Mathieu-Daudé
9 siblings, 1 reply; 15+ messages in thread
From: Fam Zheng @ 2020-10-14 12:34 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Kevin Wolf, Alex Williamson, Stefan Hajnoczi, qemu-block, Max Reitz
On Wed, 2020-10-14 at 13:52 +0200, Philippe Mathieu-Daudé wrote:
> A bunch of boring patches that have been proven helpful
> while debugging.
>
> Philippe Mathieu-Daudé (9):
> util/vfio-helpers: Improve reporting unsupported IOMMU type
> util/vfio-helpers: Trace PCI I/O config accesses
> util/vfio-helpers: Trace PCI BAR region info
> util/vfio-helpers: Trace where BARs are mapped
> util/vfio-helpers: Improve DMA trace events
> util/vfio-helpers: Convert vfio_dump_mapping to trace events
> util/vfio-helpers: Let qemu_vfio_dma_map() propagate Error
> util/vfio-helpers: Let qemu_vfio_do_mapping() propagate Error
> util/vfio-helpers: Let qemu_vfio_verify_mappings() use
> error_report()
>
> include/qemu/vfio-helpers.h | 2 +-
> block/nvme.c | 14 ++++----
> util/vfio-helpers.c | 66 +++++++++++++++++++++------------
> ----
> util/trace-events | 10 ++++--
> 4 files changed, 54 insertions(+), 38 deletions(-)
>
> --
> 2.26.2
>
>
>
Modular the g_strdup_printf() memleak I pointed out:
Reviewed-by: Fam Zheng <fam@euphon.net>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 3/9] util/vfio-helpers: Trace PCI BAR region info
2020-10-14 12:23 ` Fam Zheng
@ 2020-10-14 12:42 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 12:42 UTC (permalink / raw)
To: Fam Zheng, qemu-devel
Cc: Kevin Wolf, Alex Williamson, Stefan Hajnoczi, qemu-block, Max Reitz
On 10/14/20 2:23 PM, Fam Zheng wrote:
> On Wed, 2020-10-14 at 13:52 +0200, Philippe Mathieu-Daudé wrote:
>> For debug purpose, trace BAR regions info.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>> util/vfio-helpers.c | 8 ++++++++
>> util/trace-events | 1 +
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
>> index 1d4efafcaa4..cd6287c3a98 100644
>> --- a/util/vfio-helpers.c
>> +++ b/util/vfio-helpers.c
>> @@ -136,6 +136,7 @@ static inline void
>> assert_bar_index_valid(QEMUVFIOState *s, int index)
>>
>> static int qemu_vfio_pci_init_bar(QEMUVFIOState *s, int index, Error
>> **errp)
>> {
>> + g_autofree char *barname = NULL;
^^^^^^^^^^
>> assert_bar_index_valid(s, index);
>> s->bar_region_info[index] = (struct vfio_region_info) {
>> .index = VFIO_PCI_BAR0_REGION_INDEX + index,
>> @@ -145,6 +146,10 @@ static int qemu_vfio_pci_init_bar(QEMUVFIOState
>> *s, int index, Error **errp)
>> error_setg_errno(errp, errno, "Failed to get BAR region
>> info");
>> return -errno;
>> }
>> + barname = g_strdup_printf("bar[%d]", index);
>
> Where is barname freed?
Using GLib g_autofree qualifier.
>
> Fam
>
>> + trace_qemu_vfio_region_info(barname, s-
>>> bar_region_info[index].offset,
>> + s->bar_region_info[index].size,
>> + s-
>>> bar_region_info[index].cap_offset);
>>
>> return 0;
>> }
>> @@ -416,6 +421,9 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s,
>> const char *device,
>> ret = -errno;
>> goto fail;
>> }
>> + trace_qemu_vfio_region_info("config", s-
>>> config_region_info.offset,
>> + s->config_region_info.size,
>> + s->config_region_info.cap_offset);
>>
>> for (i = 0; i < ARRAY_SIZE(s->bar_region_info); i++) {
>> ret = qemu_vfio_pci_init_bar(s, i, errp);
>> diff --git a/util/trace-events b/util/trace-events
>> index c048f85f828..4d40c74a21f 100644
>> --- a/util/trace-events
>> +++ b/util/trace-events
>> @@ -87,3 +87,4 @@ qemu_vfio_dma_map(void *s, void *host, size_t size,
>> bool temporary, uint64_t *io
>> qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p"
>> qemu_vfio_pci_read_config(void *buf, int ofs, int size, uint64_t
>> region_ofs, uint64_t region_size) "read cfg ptr %p ofs 0x%x size %d
>> (region ofs 0x%"PRIx64" size %"PRId64")"
>> qemu_vfio_pci_write_config(void *buf, int ofs, int size, uint64_t
>> region_ofs, uint64_t region_size) "write cfg ptr %p ofs 0x%x size %d
>> (region ofs 0x%"PRIx64" size %"PRId64")"
>> +qemu_vfio_region_info(const char *desc, uint64_t offset, uint64_t
>> size, uint32_t cap_offset) "region '%s' ofs 0x%"PRIx64" size
>> %"PRId64" cap_ofs %"PRId32
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 0/9] util/vfio-helpers: Improve debugging experience
2020-10-14 12:34 ` [PATCH 0/9] util/vfio-helpers: Improve debugging experience Fam Zheng
@ 2020-10-14 12:42 ` Philippe Mathieu-Daudé
2020-10-14 12:50 ` Fam Zheng
0 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-10-14 12:42 UTC (permalink / raw)
To: Fam Zheng, qemu-devel
Cc: Kevin Wolf, Alex Williamson, Stefan Hajnoczi, qemu-block, Max Reitz
On 10/14/20 2:34 PM, Fam Zheng wrote:
> On Wed, 2020-10-14 at 13:52 +0200, Philippe Mathieu-Daudé wrote:
>> A bunch of boring patches that have been proven helpful
>> while debugging.
>>
>> Philippe Mathieu-Daudé (9):
>> util/vfio-helpers: Improve reporting unsupported IOMMU type
>> util/vfio-helpers: Trace PCI I/O config accesses
>> util/vfio-helpers: Trace PCI BAR region info
>> util/vfio-helpers: Trace where BARs are mapped
>> util/vfio-helpers: Improve DMA trace events
>> util/vfio-helpers: Convert vfio_dump_mapping to trace events
>> util/vfio-helpers: Let qemu_vfio_dma_map() propagate Error
>> util/vfio-helpers: Let qemu_vfio_do_mapping() propagate Error
>> util/vfio-helpers: Let qemu_vfio_verify_mappings() use
>> error_report()
>>
>> include/qemu/vfio-helpers.h | 2 +-
>> block/nvme.c | 14 ++++----
>> util/vfio-helpers.c | 66 +++++++++++++++++++++------------
>> ----
>> util/trace-events | 10 ++++--
>> 4 files changed, 54 insertions(+), 38 deletions(-)
>>
>> --
>> 2.26.2
>>
>>
>>
>
> Modular the g_strdup_printf() memleak I pointed out:
>
> Reviewed-by: Fam Zheng <fam@euphon.net>
Thanks!
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 0/9] util/vfio-helpers: Improve debugging experience
2020-10-14 12:42 ` Philippe Mathieu-Daudé
@ 2020-10-14 12:50 ` Fam Zheng
0 siblings, 0 replies; 15+ messages in thread
From: Fam Zheng @ 2020-10-14 12:50 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Kevin Wolf, Alex Williamson, qemu-block, Stefan Hajnoczi, Max Reitz
On Wed, 2020-10-14 at 14:42 +0200, Philippe Mathieu-Daudé wrote:
> On 10/14/20 2:34 PM, Fam Zheng wrote:
> > On Wed, 2020-10-14 at 13:52 +0200, Philippe Mathieu-Daudé wrote:
> > > A bunch of boring patches that have been proven helpful
> > > while debugging.
> > >
> > > Philippe Mathieu-Daudé (9):
> > > util/vfio-helpers: Improve reporting unsupported IOMMU type
> > > util/vfio-helpers: Trace PCI I/O config accesses
> > > util/vfio-helpers: Trace PCI BAR region info
> > > util/vfio-helpers: Trace where BARs are mapped
> > > util/vfio-helpers: Improve DMA trace events
> > > util/vfio-helpers: Convert vfio_dump_mapping to trace events
> > > util/vfio-helpers: Let qemu_vfio_dma_map() propagate Error
> > > util/vfio-helpers: Let qemu_vfio_do_mapping() propagate Error
> > > util/vfio-helpers: Let qemu_vfio_verify_mappings() use
> > > error_report()
> > >
> > > include/qemu/vfio-helpers.h | 2 +-
> > > block/nvme.c | 14 ++++----
> > > util/vfio-helpers.c | 66 +++++++++++++++++++++---------
> > > ---
> > > ----
> > > util/trace-events | 10 ++++--
> > > 4 files changed, 54 insertions(+), 38 deletions(-)
> > >
> > > --
> > > 2.26.2
> > >
> > >
> > >
> >
> > Modular the g_strdup_printf() memleak I pointed out:
> >
> > Reviewed-by: Fam Zheng <fam@euphon.net>
Overlooked the auto free qualifier, so that one is okay too!
Fam
>
> Thanks!
>
>
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2020-10-14 12:51 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-14 11:52 [PATCH 0/9] util/vfio-helpers: Improve debugging experience Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 1/9] util/vfio-helpers: Improve reporting unsupported IOMMU type Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 2/9] util/vfio-helpers: Trace PCI I/O config accesses Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 3/9] util/vfio-helpers: Trace PCI BAR region info Philippe Mathieu-Daudé
2020-10-14 12:23 ` Fam Zheng
2020-10-14 12:42 ` Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 4/9] util/vfio-helpers: Trace where BARs are mapped Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 5/9] util/vfio-helpers: Improve DMA trace events Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 6/9] util/vfio-helpers: Convert vfio_dump_mapping to " Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 7/9] util/vfio-helpers: Let qemu_vfio_dma_map() propagate Error Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 8/9] util/vfio-helpers: Let qemu_vfio_do_mapping() " Philippe Mathieu-Daudé
2020-10-14 11:52 ` [PATCH 9/9] util/vfio-helpers: Let qemu_vfio_verify_mappings() use error_report() Philippe Mathieu-Daudé
2020-10-14 12:34 ` [PATCH 0/9] util/vfio-helpers: Improve debugging experience Fam Zheng
2020-10-14 12:42 ` Philippe Mathieu-Daudé
2020-10-14 12:50 ` Fam Zheng
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.