You are not logged in.

#1001 2014-01-11 05:31:52

DanaGoyette
Member
Registered: 2014-01-03
Posts: 46

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Hmm, on the mailing list, Andrew helped me track down my "genirq" issue.  Somehow, I had set "nointxmask" on vfio-pci.  However, the behavior I'm getting is still somewhat odd.

Intel video is host, but is in UEFI boot mode.  Therefore, I'd expect it to not need the legacy VGA registers...
I'm booted into a kernel WITH the Intel VGA Abiter patches, though.

Radeon is handed to the guest, as secondary video (precautions against VGA arbitration issues).
With pci-assign, the radeon needs to be manually ejected before guest session, and upon doing so, the GPU fan kicks into ultra-high-speed mode.
With radeon handed to VM via vfio, but still as secondary device (no x-vga), the VM shows garbage on the Radeon, and then reboots.

Ideally, I'd like to get a video card with native UEFI boot mode support -- with a proper EFI GOP video card, Windows 8 supposedly doesn't need the legacy VGA registers at all.
Right now, that a moot point, since the VM won't even TRY to boot if I try to use OVMF.fd as the firmware.  I don't even get the TianoCore logo, even with all VFIO usage removed!

EDIT: Okay, redid it without libvirt involved at all.
Q35 system, primary is cirrus, BIOS image not loaded: VIDEO_TR_FAILURE (atikmpag.sys)
Q35 system, primary is QXL, BIOS image not loaded: Radeon driver won't load due to unspecified resource conflict.
Q35 system, primary is cirrus or QXL, BIOS image loaded: THREAD_STUCK_IN_DEVICE_DRIVER
Q35 system, x-vga=on: some reboots with no output, some boots with THREAD_STUCK_IN_DEVICE_DRIVER.
piix4 system: tutorial doesn't say where I should attach things.

EDIT again: Okay, this time I tried removing ALL forwarded devices.  Still, black screen!
EDIT yet again: While I bang my head against this for a while longer (or perhaps just call it a night), I guess I'll leave a few coherent questions.

The biggest question: is my assumption that using EFI boot in the guest will make VGA arbitration unnnecessary, likely to be true?  Also, what can I do to get Qemu to actually START in EFI mode?

Last edited by DanaGoyette (2014-01-11 06:23:17)

Offline

#1002 2014-01-11 09:02:25

firewing1
Member
Registered: 2013-12-17
Posts: 9

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

I forget where I read this but I remember seeing that booting from UEFI causes some issues with VFIO for now. I could try without it and if it works, see if A.W. can help point you in the right direction. He posts here from time to time or you may have better luck on the qemu mailing lists.
Edit: this seems to prove me wrong about UEFI+VFIO, so maybe the issue was UEFI + VBIOS / x-vga=on...

Last edited by firewing1 (2014-01-11 09:05:04)

Offline

#1003 2014-01-11 16:49:06

DanaGoyette
Member
Registered: 2014-01-03
Posts: 46

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

The vfio passthrough isn't even a factor in OVMF not working.  Compare these two command lines:
qemu-system-x86_64 -M q35 -m 5120 -boot menu=on -monitor stdio -debugcon file:/dev/stderr -global isa-debugcon.iobase=0x402 -bios /usr/share/seabios/bios.bin
qemu-system-x86_64 -M q35 -m 5120 -boot menu=on -monitor stdio -debugcon file:/dev/stderr -global isa-debugcon.iobase=0x402 -bios /usr/share/ovmf/OVMF.fd

The former goes on to PXE boot; the latter just hangs, before even printing any of the isa-debugcon info!

EDIT: Okay, well, at least the following tries to start:
qemu-system-x86_64 -M pc -m 5120 -boot menu=on -monitor stdio -debugcon file:/dev/stderr -global isa-debugcon.iobase=0x402 -bios /usr/share/ovmf/OVMF.fd
However, if I add enable-kvm, it again hangs instead of booting.

Are there any general guidelines about where you're supposed to attach the GPU on the i440fx virtual machine?

Last edited by DanaGoyette (2014-01-11 17:22:29)

Offline

#1004 2014-01-11 17:36:59

DanaGoyette
Member
Registered: 2014-01-03
Posts: 46

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Okay, it looks like UEFI is a dead-end -- it's only in a minimally-usable state.
The better option is to keep using Cirrus as primary, but I'd really like to get it working with vfio for the Radeon, instead of pci-attach.  Right now, attempting to do so results in a guest display full of checkerboarded static, and then a guest reboot.

EDIT: Interesting: I can get a somewhat more correct pc-q35 system using this config file: https://github.com/qemu/qemu/blob/maste … hipset.cfg

Then the semantics of attaching devices is somewhat different:
-readconfig q35-chipset.cfg \
-device vfio-pci,host=01:00.0,bus=ich9-pcie-port-1,romfile=/usr/share/qemu/hd5750_vbios.bin,x-vga=on
-device vfio-pci,host=09:00.0,bus=ich9-pcie-port-2 \
-device vfio-pci,host=0c:00.0,bus=ich9-pcie-port-3 \
-device vfio-pci,host=07:04.0,bus=ich9-pci-bridge \

The last device is actually a PCI device, not a PCIe device, by the way.

With the above config, I can boot an Ubuntu VM, and get garbled colors on the host, but working 3D acceleration on an Ubuntu LiveCD.  It still BSODs in Windows, though.

EDIT: Adding some version info:

seabios: (version rel-1.7.3-117-g31b8b4e-20131206_080705-nilsson.home.kraxel.org)
QEMU emulator version 1.7.0 (Debian 1.7.0+dfsg-2ubuntu5), Copyright (c) 2003-2008 Fabrice Bellard

Last edited by DanaGoyette (2014-01-11 18:36:54)

Offline

#1005 2014-01-11 18:45:13

firewing1
Member
Registered: 2013-12-17
Posts: 9

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

DanaGoyette wrote:

With the above config, I can boot an Ubuntu VM, and get garbled colors on the host, but working 3D acceleration on an Ubuntu LiveCD.  It still BSODs in Windows, though.

Your hardware is very similar to my setup - the garbled colors and BSOD I was able to fix using the Haswell i915 arbitration patches. If you haven't applied those already, try rebuilding the kernel with them.

Offline

#1006 2014-01-11 19:07:29

DanaGoyette
Member
Registered: 2014-01-03
Posts: 46

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Interesting... I realized I had somehow trampled on git qemu, and hence reinstalled git qemu. 

After a bit more mucking around, I finally got the damn thing to start -- even WITHOUT the VGA arbiter patches!

Here's my complete config now:

qemu-system-x86_64 \
-enable-kvm \
-M q35 \
-m 5120 \
-cpu host \
-boot order=dc \
-monitor stdio \
-debugcon file:/dev/stderr -global isa-debugcon.iobase=0x402 \
-smp 8,sockets=1,cores=4,threads=2 \
-bios /usr/share/qemu/bios.bin \
-readconfig q35-chipset.cfg \
-device vfio-pci,host=01:00.0,bus=ich9-pcie-port-1,rombar=0 \
-device vfio-pci,host=09:00.0,bus=ich9-pcie-port-3 \
-device vfio-pci,host=0c:00.0,bus=ich9-pcie-port-4 \
-device vmware-svga,bus=ich9-pci-bridge \
-device vfio-pci,host=07:04.0,bus=ich9-pci-bridge \
-drive id=dvd -device ide-cd,drive=dvd,bus=ide.0 \
-drive file=/var/lib/libvirt/images/Windows.img,id=hdd,format=raw -device ide-hd,drive=hdd,bus=ide.1 \
-device usb-tablet \
-net none

I'm not exactly sure WHAT it's using for VGA bios now (particularly considering where I stashed the vmware VGA controller), but hey, as long as it boots, it's great.

EDIT: Note that "-net none" is acceptable for me, because I'm forwarding 0c:00.0, which is a real NIC.

EDIT: Also note: the host is, again, in EFI boot mode.  With my hacked-up config above, I have no idea if that's part of why it works.

Last edited by DanaGoyette (2014-01-11 19:29:01)

Offline

#1007 2014-01-12 14:38:54

cryptonymous
Member
Registered: 2013-11-05
Posts: 6

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

nbhs wrote:
TripleSpeeder wrote:
nbhs wrote:

AUDIO EMULATION:

To hear the sound from the vm on your host speakers you'll need to add this lines:

-device ich9-intel-hda,bus=pcie.0,addr=1b.0,id=sound0 \
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 

You might need to start qemu like this (using pulseaudio, to use a different driver change QEMU_AUDIO_DRV= variable):

QEMU_PA_SAMPLES=128 QEMU_AUDIO_DRV=pa qemu-system-x86_64...

With QEMU_PA_SAMPLES=128 the sound is horribly distorted here. Without this parameter it works fine though. @Op: What is the background of this setting?

Trial and error, im using alsa now instead of pulse now though

What QEMU_AUDIO_* and QEMU_ALSA_* parameters do you use? Is there something non-default in your .asoundrc? I was unable to pick up the right parameters to use with QEMU_AUDIO_DRV=alsa and Windows 7. Sound is horribly chopped and distorted each time I run the Windows 7 VM (sound works fine in a Linux VM with default parameters). Specifying usb-audio or ich9-intel-hda as emulated sound card doesn't really make any difference. Sound card used on the host system is HDA Intel (ALC1150).

Offline

#1008 2014-01-12 18:58:02

nbhs
Member
From: Montevideo, Uruguay
Registered: 2013-05-02
Posts: 402

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

cryptonymous wrote:
nbhs wrote:
TripleSpeeder wrote:

With QEMU_PA_SAMPLES=128 the sound is horribly distorted here. Without this parameter it works fine though. @Op: What is the background of this setting?

Trial and error, im using alsa now instead of pulse now though

What QEMU_AUDIO_* and QEMU_ALSA_* parameters do you use? Is there something non-default in your .asoundrc? I was unable to pick up the right parameters to use with QEMU_AUDIO_DRV=alsa and Windows 7. Sound is horribly chopped and distorted each time I run the Windows 7 VM (sound works fine in a Linux VM with default parameters). Specifying usb-audio or ich9-intel-hda as emulated sound card doesn't really make any difference. Sound card used on the host system is HDA Intel (ALC1150).

Using win 8.1

QEMU_ALSA_DAC_BUFFER_SIZE=512 QEMU_ALSA_DAC_PERIOD_SIZE=170 QEMU_AUDIO_DRV=alsa qemu-system-x86_64...

But like i said, it was just trial and error, and no its just stock arch settings on a gnome3 desktop

Last edited by nbhs (2014-01-12 19:00:49)

Offline

#1009 2014-01-12 20:46:28

dogblue
Member
Registered: 2013-06-23
Posts: 5

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

beardedchimp wrote:

Games that don't work:
CS:GO
Shogun 2
Tomb Raider (the new one)
Civ 5
A load of others but can't remember which

I have also had problems with Shogun 2. The demo (downloaded from steam) ran fine, but after I bought it it would crash to desktop from the loading/legal screen. I assumed it was just poorly written and unrelated to running in a VM.

Offline

#1010 2014-01-13 05:41:07

MacCoaster
Member
Registered: 2014-01-06
Posts: 10

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Works fine for me with a Radeon HD7770, after trying many different configurations. Have a R9 280X on the way.

Specs:

ASUS P9D-WS motherboard
Intel Xeon E3-1275 v3
32 GB RAM
LSI SAS9211-8I
XFX Radeon HD7770

I had to plug in the LSI card on the last x16 slot which forced it in x4 mode, just so I could get the GPU in its isolated IOMMU group.

I compiled 3.13-rc6 using the PKGBUILD from https://aur.archlinux.org/packages/linux-mainline/, putting in the Intel IGP arbitration patch and the memory leak patch posted earlier, with all the CONFIG_VFIO stuff built in the kernel.

Installed libvirt, et al., save for QEMU and seabios using pacman. Pulled from QEMU git recursively and compiled, installed into /usr/local.

I added these arguments to the kernel command line:

vfio_iommu_type1.allow_unsafe_interrupts=1 intel_iommu=on pci-stub.ids=xxxx:yyyy,aaaa:bbbb kvm_intel.emulate_invalid_guest_state=0 nohz=off

Replacing xxxx:yyyy and aaaa:bbbb with their appropriate respective PCI ids for the GPUs.

/etc/libvirt/qemu.conf:

user = "root"
group = "kvm"

cgroup_device_acl = [
    "/dev/null", "/dev/full", "/dev/zero",
    "/dev/random", "/dev/urandom",
    "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
    "/dev/rtc","/dev/hpet", "/dev/vfio/vfio", "/dev/vfio/1"
]

clear_emulator_capabilities = 0

For some reason,

clear_emulator_capabilities = 1

would not work. Is this really a big deal? qemu.conf has a scary-sounding warning:

# Warning: Disabling this option means that a compromised guest can
# exploit the privileges and possibly do damage to the host.

And in my libvirt XML specification I use, the relevant parts:

<os>
  <type arch='x86_64' machine='pc-q35-1.7'>hvm</type>
  <boot dev='hd'/>
</os>
<features>
  <acpi/>
  <apic/>
  <pae/>
</features>
<cpu mode='custom' match='exact'>
  <model fallback='allow'>Haswell</model>
</cpu>
...
<seclabel type='none'/>
<qemu:commandline>
  <qemu:arg value='-vga'/>
  <qemu:arg value='none'/>
  <qemu:arg value='-bios'/>
  <qemu:arg value='/usr/local/share/qemu/bios.bin'/>
  <qemu:arg value='-device'/>
  <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root'/>
  <qemu:arg value='-device'/>
  <qemu:arg value='vfio-pci,host=01:00.0,bus=root,addr=00.0,multifunction=on,x-vga=on'/>
  <qemu:arg value='-device'/>
  <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
</qemu:commandline>

Installed Windows 8.1 with VFIO drivers at install time. Installed Radeon drivers. Everything seems to work fine.

Now I need to figure out how to pin CPUs and stuff like that.

Does anyone know if VM guest suspend/pause works with GPU passthrough or not?

Last edited by MacCoaster (2014-01-13 05:49:35)

Offline

#1011 2014-01-13 07:16:37

noctavian
Member
Registered: 2013-07-11
Posts: 14

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

DanaGoyette wrote:

EDIT: Also note: the host is, again, in EFI boot mode.  With my hacked-up config above, I have no idea if that's part of why it works.

When I tried to do VGA passthrough with pci-assign last summer, I had a problem, IOMMU and DMAR weren't enabled properly unless I was booting in (U)EFI mode, I think it was something related to secure boot or a buggy (U)EFI. I updated to the latest (U)EFI for my motherboard, then (re)installed Arch in (U)EFI boot mode and then IOMMU and DMAR were beeing enabled and VGA passthrough worked.

Offline

#1012 2014-01-14 12:51:13

Norcoen
Member
From: Norway
Registered: 2013-11-02
Posts: 23

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

MacCoaster wrote:

Does anyone know if VM guest suspend/pause works with GPU passthrough or not?

pause/resume vm works fine for me with 7850 OC

Offline

#1013 2014-01-15 04:14:55

DanaGoyette
Member
Registered: 2014-01-03
Posts: 46

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Hmm, just for comparison, I tried an NVIDIA GeForce 260 (borrowed); with my same config above that works with the Radeon, it definitely does NOT work with the nvidia card (even with the Code 43 NoSnoop patch).

If I go to device manager (audio navigation using Narrator), I can try to disable and re-enable the GeForce, and I get Qemu (on the host) aborting:

qemu-system-x86_64: hw/pci/pci.c:232: pcibus_reset: Assertion `bus->irq_count[i] == 0' failed.

Offline

#1014 2014-01-15 12:50:10

mbirkis
Member
Registered: 2013-12-12
Posts: 18

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

I have a problem getting the patch for the nvidia driver to work. My setup has the kernel + qemu + seabios from OP. But i cant figure out how to get a patched nvidia proprietary driver for the host.

I tried building the driver using ABS, changing the version in the PKGBUILD to 319.23 and applying the andy123 patch from OP. But i couldn't get past some xorg dependency issue to install it.

In addition i tried changing the version numbers in the patch file and PKGBUILD applying it to the current version 331.38, but i could not load the module.

What am i doing wrong here?

Offline

#1015 2014-01-16 06:24:38

mostlyharmless
Member
Registered: 2014-01-16
Posts: 72

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Been studying this fine thread for quite a bit, great work, appreciate it!

Now I have things up and running, specs:

ASUS Rampage IV Extreme
intel 4930K
beta BIOS 9502 (only bios currently for this mb that supports vt-d for ivy-E)
host using AMD 7970 and radeon drivers
Windows 7 guest in VM using NVIDIA K2000 passed through
host is Slackware 14.1 but with kernel 3.12.1 downloaded from kernel.org with iommu config options compiled in kernel
qemu 1.7.50 from git per original post on this thread, with seabios as well

Things pretty much worked exactly according to instructions.  I have no sound on the guest, but haven't given up yet, suspect it's a qemu compile problem. Had the catalyst driver installed with Slackware's default kernel but for some reason it didn't play nice with kernel 3.12.1.  Couldn't run X.   It's a work in progress.

Last edited by mostlyharmless (2014-01-16 06:32:54)

Offline

#1016 2014-01-17 09:12:48

mbirkis
Member
Registered: 2013-12-12
Posts: 18

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

A quick update. My attempt to run VGA_Passthrough is what i would call a success with the odd hickup here and there.

Info:
Motherboard - Gigabyte 990XA-UD3 (ps dont buy this motherboard, it is not good imo)
CPU - AMD 8350fx 8 core (6 cores reserved for guest, 2 for host)
RAM - 8GB (4gb reserved for guest)
Host VGA - Nvidia GTX 570
Guest VGA - Nvidia GTX 580
120Gb ssd for host
120Gb ssd for guest
Host is Arch linux with kernel+qemu+seabios from OP
Guest is Win7 64bit

I have only gotten as far as to getting the guest up and running on the passed through card, havent tested any games or 3d intensive apps yet. It seems to work good in guest, i get a windows experience rating of 7,3 and aero looks smooth and good. I will report back with more info on performance etc after i get some more testing done.

What i havent gotten working:
Nvidia driver for the host. I am having problems getting the driver patched using OP patch from andy123, this is not a vga passthrough/kvm/qemu problem but probably due to user error on my part.
Sound is not tested yet.
I can only run the vm one time each reboot, it is kinda annoying but i really cant find a way to debug and fix this. If someone have any tips i can try pls let me know.

Offline

#1017 2014-01-18 03:21:23

Lauri
Member
Registered: 2014-01-18
Posts: 2

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Thanks for this great thread. With all the information here I was able to get VGA passthrough working.

My setup is:
Debian testing host
Kernel 3.12.8 with i915 and acs override patches
QEMU-git with nosnoop patch
Windows 7 guest

Motherboard: Asus Z87-K
CPU: Intel i7-4770
GPU host: Intel HD4600
GPU guest: GeForce GTX560

I've only used this for gaming and so far every game I've tried has worked. Only problem I have with this is if I shutdown the VM I have to reboot the host to get VGA passthrough working again.

Offline

#1018 2014-01-18 12:12:42

rabcor
Banned
Registered: 2013-02-09
Posts: 500

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

when i try to compile your qemu-git i get:

cp: cannot stat ‘/home/user/Downloads/qemu-git/src/qemu-git-2.0.r30392.g1cf892c/libcacard.pc’: No such file or directory
==> ERROR: A failure occurred in package_libcacard-git().
    Aborting...

Why would i run into problems if i compile from AUR? (not that i can, qemu requires spice, spice requires libcacard and libcacard conflicts with qemu breaking the package) hmm

Why can't we use the qemu package in the official repos?

Finally, how do i apply the patch for using the nvidia proprietary drivers on the host? i can see a patch, but i ahve no idea what file to patch or how to get my hands on it (i thought they were closed source these drivers...(

Last edited by rabcor (2014-01-18 13:53:48)

Offline

#1019 2014-01-18 14:35:34

andy123
Member
Registered: 2011-11-04
Posts: 169
Website

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

rabcor wrote:

[…]
Finally, how do i apply the patch for using the nvidia proprietary drivers on the host? i can see a patch, but i ahve no idea what file to patch or how to get my hands on it (i thought they were closed source these drivers...(

Since mbirkis also had a problem with this, here is my modified PKGBUILD for current nvidia-dkms.


i'm sorry for my poor english wirting skills…

Offline

#1020 2014-01-18 15:09:06

rabcor
Banned
Registered: 2013-02-09
Posts: 500

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Thanks, i tried that and it didn't work for me it seems, i.e. if i run the mainline kernel i can't start X (on host), but if i run the stock arch kernel it runs X. Do i need to run a special command or something to make the card work?

Last edited by rabcor (2014-01-18 15:09:38)

Offline

#1021 2014-01-18 15:12:11

andy123
Member
Registered: 2011-11-04
Posts: 169
Website

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Dkms needs to be set up and working, but besides that… maybe you don't have the headers installed for the mainline kernel?


i'm sorry for my poor english wirting skills…

Offline

#1022 2014-01-18 18:24:59

DanaGoyette
Member
Registered: 2014-01-03
Posts: 46

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

Hmm, is there any way to get suspend/resume of the host to not crash the guest?  I suspended my host, and now the guest refuses to boot -- I'll hear my Xonar sound card click (indicating that the driver has loaded), but then the guest reboots, over and over.
I tried switching back to the Cirrus as VGA, and the damn thing still gives THREAD_STUCK_IN_DEVICE_DRIVER, and tries to reboot.  However, instead of rebooting, Qemu crashes:

pcibus_reset: Assertion `bus->irq_count[i] == 0' failed.

gdb backtrace:

#0  0x00007f72de10af77 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
        resultvar = 0
        pid = 27419
        selftid = 27419
#1  0x00007f72de10e5e8 in __GI_abort () at abort.c:90
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0x7fffabffe532, sa_sigaction = 0x7fffabffe532}, sa_mask = {__val = {140131329995524, 140131448300662, 232, 140127602999296, 140131328612305, 140131480475824, 140736079064797, 124136728992, 4, 140736079056528, 
              0, 0, 0, 140131329994867, 140131442405376, 140131330010968}}, sa_flags = -449665849, sa_restorer = 0x7f72e532aff6 <__PRETTY_FUNCTION__.24793>}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007f72de103d43 in __assert_fail_base (fmt=0x7f72de25af58 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7f72e532a4c7 "bus->irq_count[i] == 0", file=file@entry=0x7f72e532a476 "hw/pci/pci.c", line=line@entry=232, 
    function=function@entry=0x7f72e532aff6 <__PRETTY_FUNCTION__.24793> "pcibus_reset") at assert.c:92
        str = 0x7f72e7346790 ""
        total = 4096
#3  0x00007f72de103df2 in __GI___assert_fail (assertion=0x7f72e532a4c7 "bus->irq_count[i] == 0", file=0x7f72e532a476 "hw/pci/pci.c", line=232, function=0x7f72e532aff6 <__PRETTY_FUNCTION__.24793> "pcibus_reset") at assert.c:101
No locals.
#4  0x00007f72e507e487 in pcibus_reset (qbus=0x7f72e704a440) at hw/pci/pci.c:232
        bus = 0x7f72e704a440
        i = 3
        __PRETTY_FUNCTION__ = "pcibus_reset"
#5  0x00007f72e4ff80c3 in qbus_reset_one (bus=0x7f72e704a440, opaque=0x0) at hw/core/qdev.c:236
        bc = 0x7f72e7054d40
        __func__ = "qbus_reset_one"
#6  0x00007f72e4ff8698 in qbus_walk_children (bus=0x7f72e704a440, pre_devfn=0x0, pre_busfn=0x0, post_devfn=0x7f72e4ff800d <qdev_reset_one>, post_busfn=0x7f72e4ff8053 <qbus_reset_one>, opaque=0x0) at hw/core/qdev.c:365
        kid = 0x0
        err = 0
#7  0x00007f72e4ff8756 in qdev_walk_children (dev=0x7f72e70603c0, pre_devfn=0x0, pre_busfn=0x0, post_devfn=0x7f72e4ff800d <qdev_reset_one>, post_busfn=0x7f72e4ff8053 <qbus_reset_one>, opaque=0x0) at hw/core/qdev.c:390
        bus = 0x7f72e704a440
        err = 0
#8  0x00007f72e4ff865c in qbus_walk_children (bus=0x7f72e70356d0, pre_devfn=0x0, pre_busfn=0x0, post_devfn=0x7f72e4ff800d <qdev_reset_one>, post_busfn=0x7f72e4ff8053 <qbus_reset_one>, opaque=0x0) at hw/core/qdev.c:356
        kid = 0x7f72e7055fa0
        err = 0
#9  0x00007f72e4ff8183 in qbus_reset_all (bus=0x7f72e70356d0) at hw/core/qdev.c:248
No locals.
#10 0x00007f72e4ff81c8 in qbus_reset_all_fn (opaque=0x7f72e70356d0) at hw/core/qdev.c:254
        bus = 0x7f72e70356d0
#11 0x00007f72e51a0aa4 in qemu_devices_reset () at vl.c:1839
        re = 0x7f72e730eed0
        nre = 0x7f72e735b2e0
#12 0x00007f72e51a0b10 in qemu_system_reset (report=true) at vl.c:1848
No locals.
#13 0x00007f72e51a1029 in main_loop_should_exit () at vl.c:1981
        r = RUN_STATE_DEBUG
#14 0x00007f72e51a1139 in main_loop () at vl.c:2021
        nonblocking = false
        last_io = 1
#15 0x00007f72e51a8715 in main (argc=54, argv=0x7fffabffd6e8, envp=0x7fffabffd8a0) at vl.c:4382
        i = 64
        snapshot = 0
        linux_boot = 0
        icount_option = 0x0
        initrd_filename = 0x0
        kernel_filename = 0x0
        kernel_cmdline = 0x7f72e534d0e6 ""
        boot_order = 0x7f72e7010300 "dc"
        ds = 0x7f72e70e8810
        cyls = 0
        heads = 0
        secs = 0
        translation = 0
        hda_opts = 0x0
        opts = 0x7f72e7010250
---Type <return> to continue, or q <return> to quit---
        machine_opts = 0x7f72e7010180
        olist = 0x7f72e573abc0 <qemu_machine_opts>
        optind = 54
        optarg = 0x7fffabffe891 "base=localtime"
        loadvm = 0x0
        machine = 0x7f72e5746da0 <pc_q35_machine_v2_0>
        cpu_model = 0x7fffabffe565 "host"
        vga_model = 0x7fffabffe628 "cirrus"
        qtest_chrdev = 0x0
        qtest_log = 0x0
        pid_file = 0x0
        incoming = 0x0
        show_vnc_port = 0
        defconfig = true
        userconfig = true
        log_mask = 0x0
        log_file = 0x0
        mem_trace = {malloc = 0x7f72e51a47f8 <malloc_and_trace>, realloc = 0x7f72e51a4850 <realloc_and_trace>, free = 0x7f72e51a48bd <free_and_trace>, calloc = 0x0, try_malloc = 0x0, try_realloc = 0x0}
        trace_events = 0x0
        trace_file = 0x0
        args = {machine = 0x7f72e5746da0 <pc_q35_machine_v2_0>, ram_size = 5368709120, boot_order = 0x7f72e7010300 "dc", kernel_filename = 0x0, kernel_cmdline = 0x7f72e534d0e6 "", initrd_filename = 0x0, cpu_model = 0x7fffabffe565 "host"}

EDIT: Okay, I managed to get the thing to hang instead of BSODing.  http://msdn.microsoft.com/en-us/library … 85%29.aspx
What can I do to debug this, now?

Last edited by DanaGoyette (2014-01-18 19:01:22)

Offline

#1023 2014-01-18 18:33:47

rabcor
Banned
Registered: 2013-02-09
Posts: 500

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

andy123 wrote:

Dkms needs to be set up and working, but besides that… maybe you don't have the headers installed for the mainline kernel?

dkms nvidia drivers require dkms as a dependency, so naturally i have that.

linux-mainline headers should be a part of the linux-mainline package (according to AUR)

Last edited by rabcor (2014-01-18 18:34:00)

Offline

#1024 2014-01-18 18:54:21

andy123
Member
Registered: 2011-11-04
Posts: 169
Website

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

rabcor wrote:
andy123 wrote:

Dkms needs to be set up and working, but besides that… maybe you don't have the headers installed for the mainline kernel?

dkms nvidia drivers require dkms as a dependency, so naturally i have that.

linux-mainline headers should be a part of the linux-mainline package (according to AUR)

Sure, it installs the dkms package, but did you enable the service, start it and build the module?

I'm building the kernel from the stable git repository and using the pkgbuild from [core] with makepkg -R atm.

Moreover what do you mean by "X doesn't start"? Can you post xinit output, or output from your display manager, anything?


i'm sorry for my poor english wirting skills…

Offline

#1025 2014-01-18 19:23:47

rabcor
Banned
Registered: 2013-02-09
Posts: 500

Re: KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9

oh hey it works, i just had to bind the other GPU to vfio first. Otherwise it gave me a: "NVIDIA: Failed to load the NVIDIA kernel module. No Devices Detected"

Also, if i bound my 01:00.0  (Primary GPU, i.e. the one that's loaded in the first PCI-E slot on my motherboard) X would give the same error, but if i load 02:00.0 instead (the other card) X loaded the primary card.

Weird, i don't get it but well, it works. The rest (i guess) is to got a VM (and blasted QEMU which wont build!) up and running, first time using Qemu though, i'm bound to run into problems, but this is like the 3rd time i tried to follow this guide yikes first time i have any kind of success with this too (yeah i'm such a noob, sorry)

I bet it might be a pain to use my gaming keyboard though.

I have 2 questions though that bothered me a whole lot.

1. How can i update my linux-mainline kernel to the latest version without breaking the patches or the custom settings?
2. Is there nay way to passthrough a PCI or USB device (not GPU, i'm thinking soundcard this time), loading the windows drivers for it and then emulating it back to the host (Rather than the usual of emulating hardware to guest)

Update:

nbhs wrote:
myweb wrote:

warning: cannot resolve "libcacard-git", a dependency of "qemu-git"
:: The following package cannot be upgraded due to unresolvable dependencies:
      qemu-git

Aur does not provide libcacard-git

The qemu-git PKGBUILD builds 2 packages, qemu-git and libcacard-git, it should be built on the same folder as qemu-git, so you should install it first then qemu

However, when i try to build qemu git i get

cp: cannot stat ‘/home/xandis/Downloads/qemu-git/src/qemu-git-2.0.r30392.g1cf892c/.libs/libcacard.so*’: No such file or directory
==> ERROR: A failure occurred in package_libcacard-git().
    Aborting...

What do i do? If i uninstall libcacard i need to uninstall spice too, and qemu-git wont compile without spice.

Update 2:

I managed to install the AUR version of qemu, but when i run the command to test the VM i get this

qemu-system-x86_64 -enable-kvm -M q35 -m 1024 -cpu host -smp 6,sockets=1,cores=4,threads=1 -bios /usr/share/qemu/bios.bin -vga none -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on -device vfio-pci,host=02:00.1,bus=root.1,addr=00.1

qemu-system-x86_64: -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error no iommu_group for device
qemu-system-x86_64: -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device initialization failed.
qemu-system-x86_64: -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device 'vfio-pci' could not be initialized

Update 3:

And i seem to have messed something up and X doesn't start anymore on the linux mainline D:

That's not fair, i followed the guide to the letter, but i can't even start X. on my host, and vfio-bind always seems to fail (considering i always get that no iommu_group error) should i just give up?

Last edited by rabcor (2014-01-18 23:14:56)

Offline

Board footer

Powered by FluxBB