Hi all,
Following up on the previous discussion in this thread [1], I'm submitting a
cleaned-up version of the patch to improve error messages in
virtio_init_region_cache() when virtqueue ring mapping fails.
This version introduces a helper (virtio_get_pretty_dev_name()) that returns
either:
- the device ID, if explicitly set by the user (e.g. -device ...,id=foo)
- or the QOM path from qdev_get_dev_path(dev) otherwise
This improves the clarity of error messages, especially when debugging
misconfigured guests or setups with multiple virtio devices.
## Example 1: PCI device (fallback to QOM path returns PCI ID)
~/qemu/build$ ./qemu-system-x86_64 \
-enable-kvm \
-m 512 \
-drive if=virtio,file=/tmp/some.img,format=raw
qemu-system-x86_64: Failed to map descriptor ring for device 0000:00:04.0:
invalid guest physical address or corrupted queue setup
## Example 2: Non-PCI virtio-mmio device (QOM path fallback)
~/qemu/build$ ./qemu-system-aarch64 -M virt -cpu cortex-a57 -m 512 -nographic \
-append "console=ttyAMA0" \
-drive if=none,file=/tmp/some.img,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-kernel /tmp/vmlinuz-5.15.0-qcomlt-arm64
qemu-system-aarch64: Failed to map descriptor ring for device
virtio-mmio@000000000a003e00: invalid guest physical address or corrupted queue
setup\
## Example 3: Explicit device ID (dev->id path)
~/qemu/build$ ./qemu-system-aarch64 -M virt -cpu cortex-a57 -m 512 -nographic \
-append "console=ttyAMA0" \
-drive if=none,file=/tmp/some.img,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0,id=foo \
-kernel /tmp/vmlinuz-5.15.0-qcomlt-arm64
qemu-system-aarch64: Failed to map available ring for device foo: possible
queue misconfiguration or overlapping memory region
As discussed, I considered using qdev_get_human_name() but it often returns
opaque paths like
/machine/peripheral-anon/device[0]/virtio-backend
Which are less informative in user-facing logs compared to PCI IDs or
user-specified names.
The messages have been adjusted to be more descriptive and scoped to improving
this specific area of diagnostics. I hope this aligns with the direction
discussed — but of course, I’m open to further suggestions if something still
feels off.
Thank you for your time and consideration.
Best regards,
Alessandro Ratti
[1]:
https://lore.kernel.org/qemu-devel/[email protected]/