[vfio-users] SB X-Fi Titanium passthrough

Daniel Browne jairuncaloth at gmail.com
Tue Feb 9 05:25:43 UTC 2016


Hello,

I have a Win7 x64 Pro guest on a Fedora 22 host. Using VFIO-PCI to pass
through my graphics and audio cards. I'm managing my VMs through VMM. It's
been up and running for months mostly successfully except for one stupid
little problem I haven't been able to solve.

I've been attempting to get my Creative X-Fi Titanium sound card working
correctly in the guest. If I let windows use generic drivers, it works well
enough to provide basic audio (occasionally the audio just crashes and the
system has to be rebooted before it works again but that's somewhat rare).
I wanted to install the official drivers to take advantage of the card's
full capabilities (such as surround emulation for headphones).

Once I install the official drivers, the device shows up in device manager,
volume controls are there, windows says the device is working, but audio
doesn't work. Attempting to play a test in the speaker properties results
in an error 'failed to play test tone'. I've gone through all the standard
hints and tips and tricks I've been able to find to get the drivers working
in Win7.

I'm starting to suspect some kind of resource conflict. Sometimes upon boot
after installing drivers my keyboard will fail to function. Boot up takes
much longer than normal as well. In the linux console, I'll see messages
pop up such as "kernel:Disabling IRQ #11". My most recent attempt involved
enabling MSI as described here
http://vfio.blogspot.com/2014/09/vfio-interrupts-and-how-to-coax-windows.html?m=1
thinking it might be related. While the guest OS happily switches it over
to MSI, it doesn't help.

This forum thread shows another person in a similar situation.
https://lime-technology.com/forum/index.php?topic=42459.0

I'm pretty much out of ideas. If anyone has anything else I'd love to hear
it.
Including any relevant config info I can think of below:

Mobo: ASRock Z97 Pro4
CPU: i7-4790K

$ uname -r
4.2.8-200.fc22.x86_64

GRUB_CMDLINE_LINUX="rhgb quiet intel_iommu=on splash
pci-stub.ids=10de:13c2,10de:0fbb,1102:000b pcie_acs_override=downstream"

$ lspci
00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM
Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core
Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th
Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core
Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 9 Series Chipset Family USB xHCI
Controller
00:16.0 Communication controller: Intel Corporation 9 Series Chipset Family
ME Interface #1
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (2)
I218-V
00:1a.0 USB controller: Intel Corporation 9 Series Chipset Family USB EHCI
Controller #2
00:1c.0 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express
Root Port 1 (rev d0)
00:1c.2 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d0)
00:1c.7 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express
Root Port 8 (rev d0)
00:1d.0 USB controller: Intel Corporation 9 Series Chipset Family USB EHCI
Controller #1
00:1f.0 ISA bridge: Intel Corporation 9 Series Chipset Family Z97 LPC
Controller
00:1f.2 SATA controller: Intel Corporation 9 Series Chipset Family SATA
Controller [AHCI Mode]
00:1f.3 SMBus: Intel Corporation 9 Series Chipset Family SMBus Controller
01:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX
970] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GM204 High Definition Audio
Controller (rev a1)
03:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge
(rev 03)
05:00.0 Audio device: Creative Labs EMU20k2 [X-Fi Titanium Series] (rev 04)

<domain type='kvm' id='6'>
  <name>win7</name>
  <uuid>54b2fed9-e7d8-4624-a674-ec355e76eb32</uuid>
  <title>TheBria-VM</title>
  <description>Win7 with pcie passthrough</description>
  <memory unit='KiB'>12582912</memory>
  <currentMemory unit='KiB'>12582912</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='2'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.3'>hvm</type>
    <loader readonly='yes'
type='pflash'>/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/win7_VARS.fd</nvram>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
    <kvm>
      <hidden state='on'/>
    </kvm>
  </features>
  <cpu mode='host-passthrough'/>
  <clock offset='localtime'>
    <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>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/home/dbrowne/storage/ssd/win7.qcow2'/>
      <backingStore/>
      <target dev='sdc' bus='scsi'/>
      <alias name='scsi0-0-0-2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <backingStore/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb0'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb0'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb0'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
function='0x1'/>
    </controller>
    <controller type='scsi' index='0' model='virtio-scsi'>
      <alias name='scsi0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='de:ad:be:ef:7a:10'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02'
function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/2'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/2'>
      <source path='/dev/pts/2'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x0556'/>
        <product id='0x0001'/>
        <address bus='1' device='2'/>
      </source>
      <alias name='hostdev0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x046d'/>
        <product id='0xc07d'/>
        <address bus='1' device='4'/>
      </source>
      <alias name='hostdev1'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x1532'/>
        <product id='0x010e'/>
        <address bus='1' device='5'/>
      </source>
      <alias name='hostdev2'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x1b1c'/>
        <product id='0x0c02'/>
        <address bus='1' device='3'/>
      </source>
      <alias name='hostdev5'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev6'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07'
function='0x0'/>
    </hostdev>
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir0'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir1'/>
    </redirdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08'
function='0x0'/>
    </memballoon>
    <rng model='virtio'>
      <backend model='random'>/dev/random</backend>
      <alias name='rng0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09'
function='0x0'/>
    </rng>
  </devices>
  <seclabel type='dynamic' model='selinux' relabel='yes'>
    <label>system_u:system_r:svirt_t:s0:c261,c401</label>
    <imagelabel>system_u:object_r:svirt_image_t:s0:c261,c401</imagelabel>
  </seclabel>
</domain>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/vfio-users/attachments/20160209/4e1ccf3b/attachment.htm>


More information about the vfio-users mailing list