[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