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)
Many ioctls (as expected) but they are all fast and match what we knew from strace. unix/syscall- template. S:78 unix/syscall- template. S unix/syscall- template. S:78 0x555557608430, group_fd=11, errp=0x7fffffff dda8) at /home/ubuntu/ qemu/hw/ vfio/common. c:1172 container (group= 0x5555576083b0, as=0x5555565ca5a0 <address_ space_memory> , errp=0x7fffffff dda8) at /home/ubuntu/ qemu/hw/ vfio/common. c:1257 space_memory> , errp=0x7fffffff dda8) at /home/ubuntu/ qemu/hw/ vfio/common. c:1482 00570, errp=0x7fffffff dda8) at /home/ubuntu/ qemu/hw/ vfio/pci. c:2759 00570, errp=0x7fffffff de20) at hw/pci/pci.c:2096 0570, value=true, errp=0x7fffffff dff0) at hw/core/qdev.c:835 0570, v=0x555557602f00, name=0x555555f3b5d2 "realized", opaque= 0x5555574e79e0, errp=0x7fffffff dff0) at qom/object.c:2080 0570, v=0x555557602f00, name=0x555555f3b5d2 "realized", errp=0x7fffffff dff0) at qom/object.c:1272 property_ set_qobject (obj=0x55555760 0570, value=0x5555576 02dc0, name=0x555555f3b5d2 "realized", errp=0x7fffffff dff0) at qom/qom- qobject. c:26 property_ set_bool (obj=0x55555760 0570, value=true, name=0x555555f3b5d2 "realized", errp=0x7fffffff dff0) at qom/object.c:1338 a0770, errp=0x55555661e790 <error_fatal>) at qdev-monitor.c:635 0770, errp=0x55555661e790 <error_fatal>) at vl.c:2206 68ee0 <qemu_device_opts>, func=0x555555a1b0f4 <device_init_func>, opaque=0x0, errp=0x55555661e790 <error_fatal>) option. c:1170 e3d8, envp=0x7fffffff e450) at vl.c:4387
Thread 1 "qemu-system-x86" hit Catchpoint 1 (call to syscall ioctl), 0x00007ffff72fae0b in ioctl () at ../sysdeps/
78 in ../sysdeps/
(gdb) bt
#0 0x00007ffff72fae0b in ioctl () at ../sysdeps/
#1 0x0000555555914217 in vfio_init_container (container=
#2 0x000055555591445e in vfio_connect_
#3 0x0000555555914f35 in vfio_get_group (groupid=45, as=0x5555565ca5a0 <address_
#4 0x0000555555920575 in vfio_realize (pdev=0x5555576
#5 0x0000555555b853d7 in pci_qdev_realize (qdev=0x5555576
#6 0x0000555555aac178 in device_set_realized (obj=0x55555760
#7 0x0000555555cb857a in property_set_bool (obj=0x55555760
#8 0x0000555555cb6731 in object_property_set (obj=0x55555760
#9 0x0000555555cb9965 in object_
#10 0x0000555555cb6a2a in object_
#11 0x0000555555a12cb1 in qdev_device_add (opts=0x5555566
#12 0x0000555555a1b11f in device_init_func (opaque=0x0, opts=0x5555566a
#13 0x0000555555e1c7fd in qemu_opts_foreach (list=0x5555564
at util/qemu-
#14 0x0000555555a2009d in main (argc=14, argv=0x7fffffff
The slow one is again the full iommu mapping of the guest memory: unix/syscall- template. S:78 0x555557608430, iova=4294967296, size=134217728000, vaddr=0x7fe01fe 00000, readonly=false) at /home/ubuntu/ qemu/hw/ vfio/common. c:349 region_ add (listener= 0x555557608440, section= 0x7fffffffcad0) at /home/ubuntu/ qemu/hw/ vfio/common. c:664 add_address_ space (listener= 0x555557608440, as=0x5555565ca5a0 <address_ space_memory> ) at /home/ubuntu/ qemu/memory. c:2714 listener_ register (listener= 0x555557608440, as=0x5555565ca5a0 <address_ space_memory> ) at /home/ubuntu/ qemu/memory. c:2781 container (group= 0x5555576083b0, as=0x5555565ca5a0 <address_ space_memory> , errp=0x7fffffff dda8) at /home/ubuntu/ qemu/hw/ vfio/common. c:1365 space_memory> , errp=0x7fffffff dda8) at /home/ubuntu/ qemu/hw/ vfio/common. c:1482 00570, errp=0x7fffffff dda8) at /home/ubuntu/ qemu/hw/ vfio/pci. c:2759 00570, errp=0x7fffffff de20) at hw/pci/pci.c:2096 0570, value=true, errp=0x7fffffff dff0) at hw/core/qdev.c:835 0570, v=0x555557602f00, name=0x555555f3b5d2 "realized", opaque= 0x5555574e79e0, errp=0x7fffffff dff0) at qom/object.c:2080 0570, v=0x555557602f00, name=0x555555f3b5d2 "realized", errp=0x7fffffff dff0) at qom/object.c:1272 property_ set_qobject (obj=0x55555760 0570, value=0x5555576 02dc0, name=0x555555f3b5d2 "realized", errp=0x7fffffff dff0) at qom/qom- qobject. c:26 property_ set_bool (obj=0x55555760 0570, value=true, name=0x555555f3b5d2 "realized", errp=0x7fffffff dff0) at qom/object.c:1338 a0770, errp=0x55555661e790 <error_fatal>) at qdev-monitor.c:635 0770, errp=0x55555661e790 <error_fatal>) at vl.c:2206 68ee0 <qemu_device_opts>, func=0x555555a1b0f4 <device_init_func>, opaque=0x0, errp=0x55555661e790 <error_fatal>) option. c:1170 e3d8, envp=0x7fffffff e450) at vl.c:4387
(gdb) bt
#0 0x00007ffff72fae0b in ioctl () at ../sysdeps/
#1 0x0000555555911a9e in vfio_dma_map (container=
#2 0x000055555591299b in vfio_listener_
#3 0x000055555587dfb0 in listener_
#4 0x000055555587e3dd in memory_
#5 0x000055555591499b in vfio_connect_
#6 0x0000555555914f35 in vfio_get_group (groupid=45, as=0x5555565ca5a0 <address_
#7 0x0000555555920575 in vfio_realize (pdev=0x5555576
#8 0x0000555555b853d7 in pci_qdev_realize (qdev=0x5555576
#9 0x0000555555aac178 in device_set_realized (obj=0x55555760
#10 0x0000555555cb857a in property_set_bool (obj=0x55555760
#11 0x0000555555cb6731 in object_property_set (obj=0x55555760
#12 0x0000555555cb9965 in object_
#13 0x0000555555cb6a2a in object_
#14 0x0000555555a12cb1 in qdev_device_add (opts=0x5555566
#15 0x0000555555a1b11f in device_init_func (opaque=0x0, opts=0x5555566a
#16 0x0000555555e1c7fd in qemu_opts_foreach (list=0x5555564
at util/qemu-
#17 0x0000555555a2009d in main (argc=14, argv=0x7fffffff
(gdb) c
Continuing.
In particular: 0x555557608430, iova=4294967296, size=134217728000, vaddr=0x7fe01fe 00000, readonly=false)
vfio_dma_map (container=
size=134217728000 being my 128G test