hw/virtio/pci: include vdev name in registered PCI sections

When viewing/debugging memory regions it is sometimes hard to figure
out which PCI device something belongs to. Make the names unique by
including the vdev name in the name string.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20210213130325.14781-2-alex.bennee@linaro.org>
This commit is contained in:
Alex Bennée 2021-02-13 13:03:03 +00:00
parent 1af5629673
commit b74259e3de
1 changed files with 14 additions and 8 deletions

View File

@ -1423,7 +1423,8 @@ static void virtio_pci_device_write(void *opaque, hwaddr addr,
} }
} }
static void virtio_pci_modern_regions_init(VirtIOPCIProxy *proxy) static void virtio_pci_modern_regions_init(VirtIOPCIProxy *proxy,
const char *vdev_name)
{ {
static const MemoryRegionOps common_ops = { static const MemoryRegionOps common_ops = {
.read = virtio_pci_common_read, .read = virtio_pci_common_read,
@ -1470,36 +1471,41 @@ static void virtio_pci_modern_regions_init(VirtIOPCIProxy *proxy)
}, },
.endianness = DEVICE_LITTLE_ENDIAN, .endianness = DEVICE_LITTLE_ENDIAN,
}; };
g_autoptr(GString) name = g_string_new(NULL);
g_string_printf(name, "virtio-pci-common-%s", vdev_name);
memory_region_init_io(&proxy->common.mr, OBJECT(proxy), memory_region_init_io(&proxy->common.mr, OBJECT(proxy),
&common_ops, &common_ops,
proxy, proxy,
"virtio-pci-common", name->str,
proxy->common.size); proxy->common.size);
g_string_printf(name, "virtio-pci-isr-%s", vdev_name);
memory_region_init_io(&proxy->isr.mr, OBJECT(proxy), memory_region_init_io(&proxy->isr.mr, OBJECT(proxy),
&isr_ops, &isr_ops,
proxy, proxy,
"virtio-pci-isr", name->str,
proxy->isr.size); proxy->isr.size);
g_string_printf(name, "virtio-pci-device-%s", vdev_name);
memory_region_init_io(&proxy->device.mr, OBJECT(proxy), memory_region_init_io(&proxy->device.mr, OBJECT(proxy),
&device_ops, &device_ops,
proxy, proxy,
"virtio-pci-device", name->str,
proxy->device.size); proxy->device.size);
g_string_printf(name, "virtio-pci-notify-%s", vdev_name);
memory_region_init_io(&proxy->notify.mr, OBJECT(proxy), memory_region_init_io(&proxy->notify.mr, OBJECT(proxy),
&notify_ops, &notify_ops,
proxy, proxy,
"virtio-pci-notify", name->str,
proxy->notify.size); proxy->notify.size);
g_string_printf(name, "virtio-pci-notify-pio-%s", vdev_name);
memory_region_init_io(&proxy->notify_pio.mr, OBJECT(proxy), memory_region_init_io(&proxy->notify_pio.mr, OBJECT(proxy),
&notify_pio_ops, &notify_pio_ops,
proxy, proxy,
"virtio-pci-notify-pio", name->str,
proxy->notify_pio.size); proxy->notify_pio.size);
} }
@ -1654,7 +1660,7 @@ static void virtio_pci_device_plugged(DeviceState *d, Error **errp)
struct virtio_pci_cfg_cap *cfg_mask; struct virtio_pci_cfg_cap *cfg_mask;
virtio_pci_modern_regions_init(proxy); virtio_pci_modern_regions_init(proxy, vdev->name);
virtio_pci_modern_mem_region_map(proxy, &proxy->common, &cap); virtio_pci_modern_mem_region_map(proxy, &proxy->common, &cap);
virtio_pci_modern_mem_region_map(proxy, &proxy->isr, &cap); virtio_pci_modern_mem_region_map(proxy, &proxy->isr, &cap);