Thank you Alex for answering me. It seems, I've got it working, if I boot the host with the connected GPU from the very beginning. Previously, I tried hotplug and it crashes.
So previously I had: 1. enable the host 2. enable GPU 3. connect the cable And this time I tried: 1. enable GPU 2. connect the cable 3. enable the host And this works great. Actually, I was able to install nvidia drivers to the Win10 guest and it runs well. Now, I'm not sure if there is a bug. From one side, it might be an expected requirement to exclude hotplug. From the other side, every crash is a bug, so there can be an extra check for that. It's up to you guys. I'm thankful for your hard work and for the rocket science technologies I can use with my laptop. I'm attaching dmesg for the fresh boot host with the GPU connected from the very beginning. P.S. I'm sorry for the big files. I've just noticed the ability to upload attachments. ** Attachment added: "dmesg for the working case" https://bugs.launchpad.net/qemu/+bug/1897481/+attachment/5415643/+files/dmesg -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1897481 Title: qemu crashes with VGA pass-through, e-GPU, nvidia 1060 Status in QEMU: New Bug description: I try to pass-through nvidia 1060 6gb card, which is connected via ExpressCard (EXP-GDC converter). I can successfully run my virtual machine without pass-through, but when I try to add the devices, qemu crashes. The coredump contains: Stack trace of thread 3289311: #0 0x0000000000614c49 memory_region_update_container_subregions (qemu-system-x86_64 + 0x214c49) #1 0x00000000005c0e8c vfio_probe_nvidia_bar0_quirk (qemu-system-x86_64 + 0x1c0e8c) #2 0x00000000005bcec0 vfio_realize (qemu-system-x86_64 + 0x1bcec0) #3 0x000000000079b423 pci_qdev_realize (qemu-system-x86_64 + 0x39b423) #4 0x00000000006facda device_set_realized (qemu-system-x86_64 + 0x2facda) #5 0x0000000000887e57 property_set_bool (qemu-system-x86_64 + 0x487e57) #6 0x000000000088ac48 object_property_set (qemu-system-x86_64 + 0x48ac48) #7 0x000000000088d1d2 object_property_set_qobject (qemu-system-x86_64 + 0x48d1d2) #8 0x000000000088b1f7 object_property_set_bool (qemu-system-x86_64 + 0x48b1f7) #9 0x0000000000693785 qdev_device_add (qemu-system-x86_64 + 0x293785) #10 0x000000000061aad0 device_init_func (qemu-system-x86_64 + 0x21aad0) #11 0x000000000098c87b qemu_opts_foreach (qemu-system-x86_64 + 0x58c87b) #12 0x00000000006211cb qemu_init (qemu-system-x86_64 + 0x2211cb) #13 0x00000000005002aa main (qemu-system-x86_64 + 0x1002aa) #14 0x00007fce8af21152 __libc_start_main (libc.so.6 + 0x28152) #15 0x000000000050087e _start (qemu-system-x86_64 + 0x10087e) The whole running command is pretty long, since I use libvirt to manage my machines: LC_ALL=C \ PATH=/usr/local/sbin:/usr/local/bin:/usr/bin \ HOME=/var/lib/libvirt/qemu/domain-2-Win10 \ XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-2-Win10/.local/share \ XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-2-Win10/.cache \ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-2-Win10/.config \ QEMU_AUDIO_DRV=spice \ /usr/bin/qemu-system-x86_64 \ -name guest=Win10,debug-threads=on \ -S \ -blockdev '{"driver":"file","filename":"/usr/share/edk2-ovmf/x64/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/Win10_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine pc-q35-5.1,accel=kvm,usb=off,vmport=off,dump-guest-core=off,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -cpu host,migratable=on,hv-time,hv-relaxed,hv-vapic,hv-spinlocks=0x1fff \ -m 8192 \ -overcommit mem-lock=off \ -smp 2,sockets=2,cores=1,threads=1 \ -uuid 7043c77b-4903-4527-8089-9679d9a17fee \ -no-user-config \ -nodefaults \ -chardev stdio,mux=on,id=charmonitor \ -mon chardev=charmonitor,id=monitor,mode=control \ -rtc base=localtime,driftfix=slew \ -global kvm-pit.lost_tick_policy=delay \ -no-hpet \ -no-shutdown \ -global ICH9-LPC.disable_s3=1 \ -global ICH9-LPC.disable_s4=1 \ -boot strict=on \ -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 \ -device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 \ -device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 \ -device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 \ -device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 \ -device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 \ -device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.2,addr=0x0 \ -device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0 \ -blockdev '{"driver":"file","filename":"/home/sergiy/VirtualBox VMs/win4games.img","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \ -device ide-hd,bus=ide.0,drive=libvirt-2-format,id=sata0-0-0,bootindex=1 \ -blockdev '{"driver":"file","filename":"/home/sergiy/Downloads/Win10_2004_Ukrainian_x64.iso","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"}' \ -device ide-cd,bus=ide.1,drive=libvirt-1-format,id=sata0-0-1 \ -chardev pty,id=charserial0 \ -device isa-serial,chardev=charserial0,id=serial0 \ -chardev spicevmc,id=charchannel0,name=vdagent \ -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 \ -spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on \ -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 \ -chardev spicevmc,id=charredir0,name=usbredir \ -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=1 \ -chardev spicevmc,id=charredir1,name=usbredir \ -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=2 \ -device vfio-pci,host=0000:04:00.0,id=hostdev0,bus=pci.4,multifunction=on,addr=0x0 \ -device vfio-pci,host=0000:04:00.1,id=hostdev1,bus=pci.4,addr=0x0.0x1 \ -device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on I've forced vfio_pci module for the VGA, and ensured that lspci shows Kernel driver in use: vfio_pci My laptop is Thinkpad x230, that runs on Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz. I run 5.8.6-1-MANJARO kernel and run QEMU emulator version 5.1.0. Thank you for your attention. I'd love to provide more information, but I don't know what else matters. To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1897481/+subscriptions