[vfio-users] Creative ZXRi onboard passthrough

Eric Hattemer hattenator at gmail.com
Tue Oct 27 21:01:50 UTC 2015


Hi everyone, and thanks to all who have written blogs and forum posts 
and whatnot with the information that's gotten me to where I am so far.

I have a GIGABYTE G1 Gaming GA-Z170X-Gaming G1 motherboard that comes 
with a Sound Blaster ZxRi chip onboard.  I've managed to get my GeForce 
card passthrough with vfio, and working with Windows. The last trick was 
the -cpu kvm=off flag.  But whatever I've tried, I can't get the Sound 
Blaster to go through.  Part of the problem is that I don't really 
understand what the chip even is.  Nothing in lspci says anything about 
'Sound Blaster' or 'Creative'.  `sudo lspci -nn|grep -E '1102|1274'` 
returns nothing.  Maybe I need to boot directly into Windows to see what 
it calls it.  But I think it's this one:

00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise 
Point-H HD Audio [8086:a170] (rev 31)

But I've also seen that quoted as part of the Intel integrated graphics, 
so I'm a little confused.  Is it that Creative just rebrands the chip 
made by Intel, and adds some surround sound processing in the driver so 
that they can say they did something?

Anyway, if I add -device vfio-pci,host=00:1f.3 to the qemu line, I get a 
lot of:
qemu-system-x86_64: vfio: Cannot reset device 0000:00:1f.3, no available 
reset mechanism.
warnings.  Then Windows sees a multimedia audio device with no driver.  
If I run the Creative installer, it says there's no recognized device 
and refuses to install.  The iommu group is:

00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC 
Controller [8086:a145] (rev 31)
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC 
[8086:a121] (rev 31)
00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise 
Point-H HD Audio [8086:a170] (rev 31)
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus 
[8086:a123] (rev 31)

I think it tries to read the audio device via the ISA bridge and fails 
if it can't.  I've tried sending over that bus as an arbitrarily mapped 
slot.  I've tried the device igd-passthrough-isa-bridge.  If I try 
setting it to 1f.0, I get a conflict with the existing ICH9 bus in the 
q35.  Is there a way to replace that bus with either the vfio 1f.0 or 
the igd-passthrough-isa-bridge?

Here's the qemu line I used most recently:

sudo /usr/local/bin/qemu-system-x86_64 -machine accel=kvm -name win7-2 
-machine pc-q35-2.3,accel=kvm,usb=off -cpu host,kvm=off -m $[32*1024] 
-realtime mlock=off -smp 4,sockets=4,cores=1,threads=1 -uuid 
6366db30-f90f-4900-a968-3e518bdc73e7 -rtc base=localtime,driftfix=slew 
-global kvm-pit.lost_tick_policy=discard -drive 
file=/opt/images/win7_D.qcow2,if=none,id=drive-sata0-0-1,format=qcow2,cache=writeback 
-device ide-hd,bus=ide.1,drive=drive-sata0-0-1,id=sata0-0-1 -drive 
file=/var/lib/libvirt/images/win7_J.qcow2,if=none,id=drive-sata0-0-2,format=qcow2,cache=writeback 
-device ide-hd,bus=ide.2,drive=drive-sata0-0-2,id=sata0-0-2 -drive 
file=/var/lib/libvirt/images/win7_C_F.qcow2,if=none,id=drive-sata0-0-3,format=qcow2,cache=writeback 
-device ide-hd,bus=ide.3,drive=drive-sata0-0-3,id=sata0-0-3,bootindex=1 
-device vfio-pci,host=04:00.0,x-vga=on  -usbdevice host:046d:c07c 
-usbdevice host:046d:c525 -usbdevice host:046d:c531 -usbdevice 
host:1e7d:38a4 -vga none -device secondary-vga,addr=07.0 -device 
vfio-pci,host=00:1f.3

Any help would be appreciated.

-Eric Hattemer






More information about the vfio-users mailing list