[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 28/33] util/vfio-helpers: Trace PCI I/O config accesses
From: |
Stefan Hajnoczi |
Subject: |
[PULL 28/33] util/vfio-helpers: Trace PCI I/O config accesses |
Date: |
Wed, 4 Nov 2020 15:18:23 +0000 |
From: Philippe Mathieu-Daudé <philmd@redhat.com>
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.
Reviewed-by: Fam Zheng <fam@euphon.net>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20201103020733.2303148-3-philmd@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Tested-by: Eric Auger <eric.auger@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 14a549510f..1d4efafcaa 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 24c31803b0..8d3615e717 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 0x%x (region addr
0x%"PRIx64" size 0x%"PRIx64")"
+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 0x%x (region addr
0x%"PRIx64" size 0x%"PRIx64")"
--
2.28.0
- [PULL 19/33] block/nvme: Set request_alignment at initialization, (continued)
- [PULL 19/33] block/nvme: Set request_alignment at initialization, Stefan Hajnoczi, 2020/11/04
- [PULL 18/33] block/nvme: Simplify nvme_cmd_sync(), Stefan Hajnoczi, 2020/11/04
- [PULL 20/33] block/nvme: Correct minimum device page size, Stefan Hajnoczi, 2020/11/04
- [PULL 21/33] block/nvme: Change size and alignment of IDENTIFY response buffer, Stefan Hajnoczi, 2020/11/04
- [PULL 22/33] block/nvme: Change size and alignment of queue, Stefan Hajnoczi, 2020/11/04
- [PULL 23/33] block/nvme: Change size and alignment of prp_list_pages, Stefan Hajnoczi, 2020/11/04
- [PULL 24/33] block/nvme: Align iov's va and size on host page size, Stefan Hajnoczi, 2020/11/04
- [PULL 25/33] block/nvme: Fix use of write-only doorbells page on Aarch64 arch, Stefan Hajnoczi, 2020/11/04
- [PULL 26/33] block/nvme: Fix nvme_submit_command() on big-endian host, Stefan Hajnoczi, 2020/11/04
- [PULL 27/33] util/vfio-helpers: Improve reporting unsupported IOMMU type, Stefan Hajnoczi, 2020/11/04
- [PULL 28/33] util/vfio-helpers: Trace PCI I/O config accesses,
Stefan Hajnoczi <=
- [PULL 29/33] util/vfio-helpers: Trace PCI BAR region info, Stefan Hajnoczi, 2020/11/04
- [PULL 31/33] util/vfio-helpers: Improve DMA trace events, Stefan Hajnoczi, 2020/11/04
- [PULL 30/33] util/vfio-helpers: Trace where BARs are mapped, Stefan Hajnoczi, 2020/11/04
- [PULL 32/33] util/vfio-helpers: Convert vfio_dump_mapping to trace events, Stefan Hajnoczi, 2020/11/04
- [PULL 33/33] util/vfio-helpers: Assert offset is aligned to page size, Stefan Hajnoczi, 2020/11/04
- Re: [PULL 00/33] Block patches, Peter Maydell, 2020/11/04