Score:0

Qemu thunderbolt audio device freezes on windows guest

cn flag

I have Ubuntu 20.04 hosted on HP elite book G8 (i7 1185G7) and Windows 10 guest through kvm. I need to connect a Thunderbolt audio device (Presonus Quantum) to windows. I did it using a virtual machine manager (found an audio device using lspci and added it to the machine in VM manager). I installed the official device driver in windows and the device is recognized and working. However, the audio device causes regular freezing of windows 10 guest (linux is still working). Freezes can be a few seconds to few minutes, sound output is buzzing and windows is unresponsive. Then it suddenly unfreezes, works for a few seconds and then again freezes. Currently only key for me is one error message from audio device driver (it's windows desktop application), that appears after unfreezing: "The audio engine has been stopped, because the system became unresponsive due to an overload in the audio engine".

Some additional info:

$ lspci
...
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device a0a4 (rev 20)
2b:00.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] (rev 01)
2c:00.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] (rev 01)
2c:01.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] (rev 01)
2d:00.0 Multimedia audio controller: Device 1c67:0104  <=== this is Presonus Audio Device
...

$ boltctl
 ● PreSonus Audio Electronics Quantum 2626
   ├─ type:          peripheral
   ├─ name:          Quantum 2626
   ├─ vendor:        PreSonus Audio Electronics
   ├─ uuid:          00565981-157d-3c00-ffff-ffffffffffff
   ├─ status:        authorized
   │  ├─ domain:     d065ce53-4e96-8780-ffff-ffffffffffff
   │  └─ authflags:  none
   ├─ authorized:    Št 18. november 2021, 09:05:59
   ├─ connected:     Št 18. november 2021, 09:05:59
   └─ stored:        St 17. november 2021, 17:12:54
      ├─ policy:     iommu
      └─ key:        no

Cmd line used by VM manager to start windows:

  • this cmd line was generated by virt-manager gui, I found it through ps
  • I inserted newlines for better readability, presonus audio device is at the end
/usr/bin/qemu-system-x86_64 -name guest=win10,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-6-win10/master-key.aes
-machine pc-q35-4.2,accel=kvm,usb=off,vmport=off,dump-guest-core=off

-cpu Icelake-Server,ss=on,vmx=on,pdcm=on,hypervisor=on,tsc-adjust=on,avx512ifma=on,sha-ni=on,rdpid=on,movdiri=on,movdir64b=on,fsrm=on,md-clear=on,stibp=on,arch-capabilities=on,xsaves=on,ibpb=on,ibrs=on,amd-stibp=on,amd-ssbd=on,rdctl-no=on,ibrs-all=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on,hle=off,rtm=off,mpx=off,intel-pt=off,la57=off,wbnoinvd=off,hv-time,hv-relaxed,hv-vapic,hv-spinlocks=0x1fff

-m 8192 -overcommit mem-lock=off -smp 4,sockets=4,cores=1,threads=1 -uuid 4be79611-2312-4054-a7e9-3ca041d564af -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=31,server,nowait -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 menu=on,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 pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 
-device pcie-pci-bridge,id=pci.8,bus=pci.1,addr=0x0 -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":"/var/lib/libvirt/images/pool/win10.qcow2","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' 
-blockdev '{"node-name":"libvirt-1-format","read-only":false,"cache":{"direct":true,"no-flush":false},"driver":"qcow2","file":"libvirt-1-storage","backing":null}' 

-device virtio-blk-pci,scsi=off,bus=pci.4,addr=0x0,drive=libvirt-1-format,id=virtio-disk0,bootindex=1,write-cache=on -netdev tap,fd=33,id=hostnet0,vhost=on,vhostfd=34
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:b8:50:7e,bus=pci.6,addr=0x0 
-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 
-device usb-tablet,id=input0,bus=usb.0,port=1 -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 
-device ich9-intel-hda,id=sound0,bus=pcie.0,addr=0x1b 
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 
-chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 
-chardev spicevmc,id=charredir1,name=usbredir 
-device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 

# this is presonus audio device (0000:2d:00.0):
-device vfio-pci,host=0000:2d:00.0,id=hostdev0,bus=pci.8,addr=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

As I am not experienced in this field, and I did not find any topics covering similar issues, I would like to ask you for help. I don't even know, how to start to debug this issue. Do you have any suggestions?

Thank you very much!

ChanganAuto avatar
us flag
Your describing a Windows problem so the best fit for the question is Superuser, not here. Is it possible the problem is due to virtualization hence Ubuntu related? Yes, but extremely unlikely.
wynxel avatar
cn flag
No, it is not a windows issue. On the same machine, I have also windows (dual boot) and sound card is working without any problem. There must be some issue with virtualization. I search for help, as I can't solve it alone... and my question is still relevant (although somebody already down-voted it :/ )
ChanganAuto avatar
us flag
I upvoted it to compensate but still I expect this to not have an answer.
wynxel avatar
cn flag
Thanks. Well, I also don't expect some quick solution. Maybe some hint, or commands/manuals for working with thunderbolt under linux, or reference where I could reach someone who has experiences with virtualization... something I can start with.
Score:0
pg flag

See TROUBLESHOOTING from this GUIDE, namely:

  1. Problem: Intermittent sound with crackling on guest machine with
    Windows 10 operating system.
  2. Problem: My guest machine freezes consequently my USB audio interface crashing (for passthrough solution using an additional PCIe Gen3 x4 USB 3.2 card)

Troubleshooting has been tested on an USB audio interface, but should be suitable for Thunderbolt audio interface as well. Probably your problem will be solved after you set CPU governor on Ubuntu operating system to "Performance". In addition, you can try to passthrough the Intel® 6240 Thunderbolt™ Controller, if this is possible. Of course, a lot depends on the architecture of your system.

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.