Message ID | 20201014115253.25276-1-philmd@redhat.com |
---|---|
Headers | show |
Series | util/vfio-helpers: Improve debugging experience | expand |
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
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>
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 >
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!
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! > >