Comment 23 for bug 1838575

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Many ioctls (as expected) but they are all fast and match what we knew from strace.
Thread 1 "qemu-system-x86" hit Catchpoint 1 (call to syscall ioctl), 0x00007ffff72fae0b in ioctl () at ../sysdeps/unix/syscall-template.S:78
78 in ../sysdeps/unix/syscall-template.S
(gdb) bt
#0 0x00007ffff72fae0b in ioctl () at ../sysdeps/unix/syscall-template.S:78
#1 0x0000555555914217 in vfio_init_container (container=0x555557608430, group_fd=11, errp=0x7fffffffdda8) at /home/ubuntu/qemu/hw/vfio/common.c:1172
#2 0x000055555591445e in vfio_connect_container (group=0x5555576083b0, as=0x5555565ca5a0 <address_space_memory>, errp=0x7fffffffdda8) at /home/ubuntu/qemu/hw/vfio/common.c:1257
#3 0x0000555555914f35 in vfio_get_group (groupid=45, as=0x5555565ca5a0 <address_space_memory>, errp=0x7fffffffdda8) at /home/ubuntu/qemu/hw/vfio/common.c:1482
#4 0x0000555555920575 in vfio_realize (pdev=0x555557600570, errp=0x7fffffffdda8) at /home/ubuntu/qemu/hw/vfio/pci.c:2759
#5 0x0000555555b853d7 in pci_qdev_realize (qdev=0x555557600570, errp=0x7fffffffde20) at hw/pci/pci.c:2096
#6 0x0000555555aac178 in device_set_realized (obj=0x555557600570, value=true, errp=0x7fffffffdff0) at hw/core/qdev.c:835
#7 0x0000555555cb857a in property_set_bool (obj=0x555557600570, v=0x555557602f00, name=0x555555f3b5d2 "realized", opaque=0x5555574e79e0, errp=0x7fffffffdff0) at qom/object.c:2080
#8 0x0000555555cb6731 in object_property_set (obj=0x555557600570, v=0x555557602f00, name=0x555555f3b5d2 "realized", errp=0x7fffffffdff0) at qom/object.c:1272
#9 0x0000555555cb9965 in object_property_set_qobject (obj=0x555557600570, value=0x555557602dc0, name=0x555555f3b5d2 "realized", errp=0x7fffffffdff0) at qom/qom-qobject.c:26
#10 0x0000555555cb6a2a in object_property_set_bool (obj=0x555557600570, value=true, name=0x555555f3b5d2 "realized", errp=0x7fffffffdff0) at qom/object.c:1338
#11 0x0000555555a12cb1 in qdev_device_add (opts=0x5555566a0770, errp=0x55555661e790 <error_fatal>) at qdev-monitor.c:635
#12 0x0000555555a1b11f in device_init_func (opaque=0x0, opts=0x5555566a0770, errp=0x55555661e790 <error_fatal>) at vl.c:2206
#13 0x0000555555e1c7fd in qemu_opts_foreach (list=0x555556468ee0 <qemu_device_opts>, func=0x555555a1b0f4 <device_init_func>, opaque=0x0, errp=0x55555661e790 <error_fatal>)
    at util/qemu-option.c:1170
#14 0x0000555555a2009d in main (argc=14, argv=0x7fffffffe3d8, envp=0x7fffffffe450) at vl.c:4387

The slow one is again the full iommu mapping of the guest memory:
(gdb) bt
#0 0x00007ffff72fae0b in ioctl () at ../sysdeps/unix/syscall-template.S:78
#1 0x0000555555911a9e in vfio_dma_map (container=0x555557608430, iova=4294967296, size=134217728000, vaddr=0x7fe01fe00000, readonly=false) at /home/ubuntu/qemu/hw/vfio/common.c:349
#2 0x000055555591299b in vfio_listener_region_add (listener=0x555557608440, section=0x7fffffffcad0) at /home/ubuntu/qemu/hw/vfio/common.c:664
#3 0x000055555587dfb0 in listener_add_address_space (listener=0x555557608440, as=0x5555565ca5a0 <address_space_memory>) at /home/ubuntu/qemu/memory.c:2714
#4 0x000055555587e3dd in memory_listener_register (listener=0x555557608440, as=0x5555565ca5a0 <address_space_memory>) at /home/ubuntu/qemu/memory.c:2781
#5 0x000055555591499b in vfio_connect_container (group=0x5555576083b0, as=0x5555565ca5a0 <address_space_memory>, errp=0x7fffffffdda8) at /home/ubuntu/qemu/hw/vfio/common.c:1365
#6 0x0000555555914f35 in vfio_get_group (groupid=45, as=0x5555565ca5a0 <address_space_memory>, errp=0x7fffffffdda8) at /home/ubuntu/qemu/hw/vfio/common.c:1482
#7 0x0000555555920575 in vfio_realize (pdev=0x555557600570, errp=0x7fffffffdda8) at /home/ubuntu/qemu/hw/vfio/pci.c:2759
#8 0x0000555555b853d7 in pci_qdev_realize (qdev=0x555557600570, errp=0x7fffffffde20) at hw/pci/pci.c:2096
#9 0x0000555555aac178 in device_set_realized (obj=0x555557600570, value=true, errp=0x7fffffffdff0) at hw/core/qdev.c:835
#10 0x0000555555cb857a in property_set_bool (obj=0x555557600570, v=0x555557602f00, name=0x555555f3b5d2 "realized", opaque=0x5555574e79e0, errp=0x7fffffffdff0) at qom/object.c:2080
#11 0x0000555555cb6731 in object_property_set (obj=0x555557600570, v=0x555557602f00, name=0x555555f3b5d2 "realized", errp=0x7fffffffdff0) at qom/object.c:1272
#12 0x0000555555cb9965 in object_property_set_qobject (obj=0x555557600570, value=0x555557602dc0, name=0x555555f3b5d2 "realized", errp=0x7fffffffdff0) at qom/qom-qobject.c:26
#13 0x0000555555cb6a2a in object_property_set_bool (obj=0x555557600570, value=true, name=0x555555f3b5d2 "realized", errp=0x7fffffffdff0) at qom/object.c:1338
#14 0x0000555555a12cb1 in qdev_device_add (opts=0x5555566a0770, errp=0x55555661e790 <error_fatal>) at qdev-monitor.c:635
#15 0x0000555555a1b11f in device_init_func (opaque=0x0, opts=0x5555566a0770, errp=0x55555661e790 <error_fatal>) at vl.c:2206
#16 0x0000555555e1c7fd in qemu_opts_foreach (list=0x555556468ee0 <qemu_device_opts>, func=0x555555a1b0f4 <device_init_func>, opaque=0x0, errp=0x55555661e790 <error_fatal>)
    at util/qemu-option.c:1170
#17 0x0000555555a2009d in main (argc=14, argv=0x7fffffffe3d8, envp=0x7fffffffe450) at vl.c:4387
(gdb) c
Continuing.

In particular:
vfio_dma_map (container=0x555557608430, iova=4294967296, size=134217728000, vaddr=0x7fe01fe00000, readonly=false)

size=134217728000 being my 128G test