January 11, 20188 yr So I created a Xenial VM, attaching a small SSD directly for the harddrive (IE, using Sata as the bus, and drive by ID as the path). Motherboard is an Asrock Z97M, CPU is a Haswell Core i5. Graphics and all work fine, but I get no sound. I did the msi enable fix (options snd-hda-intel enable_msi=1), but it didn't help. I checked that no channels were disabled in alsamixer, and that the correct card was default. I tried adding the "iommu allow unsafe interrupts" addendum to unraid's syslinux, and rebooted, nada. I tried passing through the Realtek AC97 controller as well. lspci shows the following for the CPU audio controller and the Realtek, respectively: Quote 02:04.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06) Subsystem: ASRock Incorporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller Flags: bus master, fast devsel, latency 0, IRQ 34 Memory at d2000000 (64-bit, non-prefetchable) Capabilities: [50] Power Management version 2 Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit- Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel 02:05.0 Audio device: Intel Corporation 9 Series Chipset Family HD Audio Controller Subsystem: ASRock Incorporation 9 Series Chipset Family HD Audio Controller Flags: bus master, fast devsel, latency 0, IRQ 33 Memory at d2004000 (64-bit, non-prefetchable) Capabilities: [50] Power Management version 2 Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+ Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel When I rebooted the physical unraid server, and let it UEFI boot directly to the SSD I'd installed Xenial on, HDMI works fine. When I ran lspci on the audio devices, I noticed some new "capabilities" - didn't save those, but they were similar to what user inhexSTER saw during those times where his sound worked - like him, when there's no sound, the endpoint/reporting (78,100) weren't there. Capabilities: [60] Power Management version 3 Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [78] Express Root Complex Integrated Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting I've seen elsewhere that seabios + Q35 might work, but I'd have to rebuild it in order to get seabios. It's pretty clear that my problem is somewhere in the vagaries of virtualization, since this works when it's hardware only. Here's my vm XML: Quote <domain type='kvm' id='1'> <name><obscured></name> <uuid>dee0d336-22d6-cf49-4a80-4f2930547627</uuid> <metadata> <vmtemplate xmlns="unraid" name="Ubuntu" icon="ubuntu.png" os="ubuntu"/> </metadata> <memory unit='KiB'>6291456</memory> <currentMemory unit='KiB'>6291456</currentMemory> <memoryBacking> <nosharepages/> </memoryBacking> <vcpu placement='static'>2</vcpu> <cputune> <vcpupin vcpu='0' cpuset='2'/> <vcpupin vcpu='1' cpuset='3'/> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-q35-2.7'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader> <nvram>/etc/libvirt/qemu/nvram/dee0d336-22d6-cf49-4a80-4f2930547627_VARS-pure-efi.fd</nvram> </os> <features> <acpi/> <apic/> </features> <cpu mode='host-passthrough'> <topology sockets='1' cores='2' threads='1'/> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/local/sbin/qemu</emulator> <disk type='block' device='disk'> <driver name='qemu' type='raw' cache='writeback'/> <source dev='/dev/disk/by-id/ata-Patriot_Torqx_2_32GB_SSD_<obscured>'/> <backingStore/> <target dev='hdc' bus='sata'/> <boot order='1'/> <alias name='sata0-0-2'/> <address type='drive' controller='0' bus='0' target='0' unit='2'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <alias name='usb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <alias name='usb'/> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <alias name='usb'/> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <alias name='usb'/> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/> </controller> <controller type='sata' index='0'> <alias name='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <controller type='pci' index='0' model='pcie-root'> <alias name='pcie.0'/> </controller> <controller type='pci' index='1' model='dmi-to-pci-bridge'> <model name='i82801b11-bridge'/> <alias name='pci.1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/> </controller> <controller type='pci' index='2' model='pci-bridge'> <model name='pci-bridge'/> <target chassisNr='2'/> <alias name='pci.2'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x03' function='0x0'/> </controller> <filesystem type='mount' accessmode='passthrough'> <source dir='/mnt/user/domains/<obscured>/'/> <target dir='unraid_drencrom'/> <alias name='fs0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/> </filesystem> <interface type='bridge'> <mac address='<obscured>'/> <source bridge='br0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x02' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target port='0'/> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-<obscured>/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='mouse' bus='ps2'> <alias name='input0'/> </input> <input type='keyboard' bus='ps2'> <alias name='input1'/> </input> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </source> <alias name='hostdev0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x04' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/> </source> <alias name='hostdev2'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x05' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x046d'/> <product id='0xc52b'/> <address bus='3' device='2'/> </source> <alias name='hostdev3'/> <address type='usb' bus='0' port='1'/> </hostdev> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/> </memballoon> </devices> <seclabel type='none' model='none'/> <seclabel type='dynamic' model='dac' relabel='yes'> <label>+0:+100</label> <imagelabel>+0:+100</imagelabel> </seclabel> </domain> potentially relevant syslog entries Quote Jan 11 15:16:49 <obscured> pulseaudio[10425]: [pulseaudio] main.c: User-configured server at {de6458db8c8e4cd0aa3471f9feb0fc4c}unix:/run/user/1000/pulse/native, which appears to be local. Probing deeper. Jan 11 15:16:49 <obscured> pulseaudio[10428]: [pulseaudio] alsa-util.c: Disabling timer-based scheduling because running inside a VM. cat /proc/asound/HDMI/codec#0 Quote Codec: Intel Haswell HDMI Address: 0 AFG Function Id: 0x1 (unsol 0) Vendor Id: 0x80862807 Subsystem Id: 0x80860101 Revision Id: 0x100000 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A State of AFG node 0x01: Power states: D0 D3 CLKSTOP EPSS Power: setting=D0, actual=D0, Clock-stop-OK GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x02 [Audio Output] wcaps 0x6611: 8-Channels Digital Converter: stream=0, channel=0 Digital: Enabled GenLevel KAE Digital category: 0x2 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0x1e]: 16 20 24 32 formats [0x5]: PCM AC3 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Node 0x03 [Audio Output] wcaps 0x6611: 8-Channels Digital Converter: stream=0, channel=0 Digital: Enabled KAE Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0x1e]: 16 20 24 32 formats [0x5]: PCM AC3 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Node 0x04 [Audio Output] wcaps 0x6611: 8-Channels Digital Converter: stream=0, channel=0 Digital: Enabled KAE Digital category: 0x0 IEC Coding Type: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0x1e]: 16 20 24 32 formats [0x5]: PCM AC3 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Node 0x05 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0b000094: OUT Detect HBR HDMI DP Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Devices: 0 Connection: 0 In-driver Connection: 3 0x02 0x03 0x04 Node 0x06 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0b000094: OUT Detect HBR HDMI DP Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Devices: 0 Connection: 0 In-driver Connection: 3 0x02 0x03 0x04 Node 0x07 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0b000094: OUT Detect HBR HDMI DP Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x40: OUT Unsolicited: tag=00, enabled=0 Power states: D0 D3 EPSS Power: setting=D0, actual=D0 Devices: 0 Connection: 3 0x02* 0x03 0x04 Node 0x08 [Vendor Defined Widget] wcaps 0xf00000: Mono cat /proc/asound/ Quote card0/ cards HDMI/ modules PCH/ seq/ version card1/ devices hwdep oss/ pcm timers cat /proc/asound/cards Quote 0 [HDMI ]: HDA-Intel - HDA Intel HDMI HDA Intel HDMI at 0xd2000000 irq 34 1 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xd2004000 irq 33 cat /proc/asound/devices Quote 1: : sequencer 2: [ 0] : control 3: [ 0- 3]: digital audio playback 4: [ 0- 7]: digital audio playback 5: [ 0- 8]: digital audio playback 6: [ 0- 9]: digital audio playback 7: [ 0-10]: digital audio playback 8: [ 0- 0]: hardware dependent 9: [ 1] : control 10: [ 1- 0]: digital audio playback 11: [ 1- 0]: digital audio capture 12: [ 1- 1]: digital audio playback 13: [ 1- 2]: digital audio capture 14: [ 1- 0]: hardware dependent 33: : timer cat /proc/asound/timers Quote G0: system timer : 4000.000us (10000000 ticks) P0-3-0: PCM playback 0-3-0 : SLAVE P0-7-0: PCM playback 0-7-0 : SLAVE P0-8-0: PCM playback 0-8-0 : SLAVE P0-9-0: PCM playback 0-9-0 : SLAVE P0-10-0: PCM playback 0-10-0 : SLAVE P1-0-0: PCM playback 1-0-0 : SLAVE P1-0-1: PCM capture 1-0-1 : SLAVE P1-1-0: PCM playback 1-1-0 : SLAVE P1-2-1: PCM capture 1-2-1 : SLAVE cat /proc/asound/pcm Quote 00-03: HDMI 0 : HDMI 0 : playback 1 00-07: HDMI 1 : HDMI 1 : playback 1 00-08: HDMI 2 : HDMI 2 : playback 1 00-09: HDMI 3 : HDMI 3 : playback 1 00-10: HDMI 4 : HDMI 4 : playback 1 01-00: ALC892 Analog : ALC892 Analog : playback 1 : capture 1 01-01: ALC892 Digital : ALC892 Digital : playback 1 01-02: ALC892 Alt Analog : ALC892 Alt Analog : capture 1 cat /etc/modprobe.d/alsa-base.conf | grep -v "#" Quote install sound-slot-0 /sbin/modprobe snd-card-0 install sound-slot-1 /sbin/modprobe snd-card-1 install sound-slot-2 /sbin/modprobe snd-card-2 install sound-slot-3 /sbin/modprobe snd-card-3 install sound-slot-4 /sbin/modprobe snd-card-4 install sound-slot-5 /sbin/modprobe snd-card-5 install sound-slot-6 /sbin/modprobe snd-card-6 install sound-slot-7 /sbin/modprobe snd-card-7 alias snd-slot-0 snd-hda-intel install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; } install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; } install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; } install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; } install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; } install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; } install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; } install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; } options bt87x index=-2 options cx88_alsa index=-2 options saa7134-alsa index=-2 options snd-atiixp-modem index=-2 options snd-intel8x0m index=-2 options snd-via82xx-modem index=-2 options snd-usb-audio index=-2 options snd-usb-caiaq index=-2 options snd-usb-ua101 index=-2 options snd-usb-us122l index=-2 options snd-usb-usx2y index=-2 options snd-cmipci mpu_port=0x330 fm_port=0x388 options snd-pcsp index=-2 options snd-usb-audio index=-2 options snd-hda-intel enable_msi=1 powersave=0 index=0 Edited January 11, 20188 yr by ForExampleJohn more info
January 11, 20188 yr Author Ok, so I may have tracked down the root problem, sadly there may not be a proper solution. I found another guy from a few years ago that was having the same problem with libvirt/ubuntu/iommu/vt-d, haswell, and an asrock z97 board. He raised it as a bug with ubuntu, who confirmed it impacted multiple users. An iommu driver patch was developed, though it doesn't seem to have solved it for the guy that submitted the bug. I'm going to give the kernel patch a try, but in the meantime, I confirmed that the realtek audio works ok when passed through. The job of this VM is to run Kodi to an LCD TV with crappy built in speakers. Outputting HDMI audio was preferred because it's a 50' cable run to the TV, so just needing a single HDMI cable is easier. But I'll live with a 50' toslink to handle the audio, if there's no software fix for this. I also tested passthrough in an old win7 vm, and there seemed to be audio issues there as well, though I didn't spend any time trying to resolve them, since I don't need audio there. Could well be there are issues with the implementation of vt-d HD audio on the asrock z97 chipset boards.
Archived
This topic is now archived and is closed to further replies.