From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: vga passthrough // questions about pci passthrough Date: Thu, 19 Jul 2012 10:16:30 -0600 Message-ID: <1342714590.3142.4.camel@ul30vt> References: <50064D87.2090809@adiumentum.com> <50068134.4060306@siemens.com> <5006A72D.3080408@adiumentum.com> <5006ADF3.9030304@adiumentum.com> <1342621405.2229.194.camel@bling.home> <50081FBC.7060208@adiumentum.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: Jan Kiszka , kvm@vger.kernel.org To: Martin Wolf Return-path: Received: from mx1.redhat.com ([209.132.183.28]:58544 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750852Ab2GSQQf (ORCPT ); Thu, 19 Jul 2012 12:16:35 -0400 In-Reply-To: <50081FBC.7060208@adiumentum.com> Sender: kvm-owner@vger.kernel.org List-ID: On Thu, 2012-07-19 at 16:54 +0200, Martin Wolf wrote: > i tried now the alpha of ubuntu 12.10 that includes qemu-kvm 1.1 > and a 3.5 kernel version. > > the "msr" problem is gone now, i was able to select "sandybridge" as > cpu topology, this removed the MSR error messages. > thats the positive part... > > unfortunately i had no success with the other topics (rebootability and > the soundcard) > > rebootability: > the guest vm still crashes with a page fault bluescreen > > soundcard: > it would be really nice if someone would be able to give me > some advise how to debug this problem. If kernel/qemu-kvm update didn't help, then the device probably doesn't support the interrupt disable mechanism that allows shared interrupts. Therefore the device needs to be on an exclusive interrupt on the host. Look in /proc/interrupts and see what else is on the same interrupt line. Your output below indicates the device is on IRQ 11. Sometimes moving the device to a different physical slot will change the IRQ and give you an exclusive interrupt, otherwise you need to find the devices sharing that interrupt line and disable them by attaching the device to pci-stub. Thanks, Alex > Am 18.07.2012 16:23, schrieb Alex Williamson: > > On Wed, 2012-07-18 at 14:37 +0200, Martin Wolf wrote: > >> soundcard logs added > >> > >> On 18.07.2012 14:08, Martin Wolf wrote: > >>> On 18.07.2012 11:26, Jan Kiszka wrote: > >>>> On 2012-07-18 07:45, Martin Wolf wrote: > >>>>> Hello, > >>>>> > >>>>> i was able to passthrough an AMD 7870 videocard to my win7 guest > >>>>> machine. > >>>> Would you add it to http://www.linux-kvm.org/page/VGA_device_assignment? > >>> sure, i will prepare something > >>>>> my host is ubuntu 12.04 with stock kernel. > >>>>> my system contains: > >>>>> dq67sw q67 mainboard > >>>>> i5-2400s cpu > >>>>> sapphire 7870 amd videocard > >>>>> xonar d2x (problems to passthrough) > >>>>> > >>>>> for full functionality i just needed two options > >>>>> > >>>>> - kernel : iommu=on > >>>>> - kvm module: ignore_msrs=1 > >>>>> (if i would not set it the guest os would crash with a bluescreen) > >>>> Can you report (=> kernel log) which MSRs are unknown to KVM? > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.309931] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522724] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522733] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x1c9 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522736] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x60 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522752] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x1c9 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522755] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x60 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522821] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x1c9 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522823] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x60 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522834] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522840] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x1c9 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522842] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x60 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522865] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x1c9 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522867] kvm: 3347: cpu1 ignored > >>> rdmsr: 0x60 > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.522921] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.523005] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.523081] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.523175] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.523248] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.523333] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> Jul 18 14:03:33 kvm-xen kernel: [ 437.523430] kvm: 3347: cpu1 > >>> kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop > >>> > >>> i hope thats the info you need, i booted it with ignore_msrs=1 since > >>> if i dont do that i get less output. > >>> (do you need it without the "option"?) > >>> > >>>>> the unigine benchmark ran flawlessly > >>>>> also the benchmark included in windows gave my videocard > >>>>> similar values (7.7) comparable with my native win7 (7.9) > >>>>> > >>>>> > >>>>> now to my questions... > >>>>> 1. is it possible to reset the videocard properly to be able to > >>>>> reboot the vm? > >>>> Which versions of kernel and qemu-kvm are involved via your distro? Can > >>>> you retry with latest Linux (3.5-rcX) / lastest qemu-kvm? Maybe > >>>> something got fixed meanwhile. > >>>> > >>>> In general, there are many adapters that require special procedures to > >>>> perform resets. This one may fall into that category as well. > >>> i will do a test today. > >>>>> 2. the xonar d2x is a very nice audio card, it would be very handy > >>>>> to be able to use it in the vm. in my oppinion the card is a > >>>>> d2 with a pci-e to pci bridge. > >>>>> i tried to passthrough the card alone and with the pci-bridge > >>>>> that was shown though lspci, but i had no success. > >>>>> maybe you guys here have an idea on that topic? > >>>> Any further details about the error? Does the adapter work with a Linux > >>>> guest or provide more information that way? > >>>> > >>>> Jan > >> 02:00.0 PCI bridge: PLX Technology, Inc. PEX8112 x1 Lane PCI > >> Express-to-PCI Bridge (rev aa) (prog-if 00 [Normal decode]) > >> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- > >> ParErr- Stepping- SERR- FastB2B- DisINTx- > >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- > >> SERR- >> Latency: 0, Cache Line Size: 64 bytes > >> Bus: primary=02, secondary=03, subordinate=03, sec-latency=32 > >> I/O behind bridge: 0000d000-0000dfff > >> Memory behind bridge: fff00000-000fffff > >> Prefetchable memory behind bridge: fff00000-000fffff > >> Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium > >> >TAbort- >> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B- > >> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- > >> Capabilities: > >> Kernel driver in use: pci-stub > >> Kernel modules: shpchp > >> > >> 03:04.0 Multimedia audio controller: C-Media Electronics Inc CMI8788 > >> [Oxygen HD Audio] > >> Subsystem: ASUSTeK Computer Inc. Virtuoso 200 (Xonar D2X) > >> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- > >> ParErr- Stepping- SERR- FastB2B- DisINTx- > >> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium > >> >TAbort- SERR- >> Interrupt: pin A routed to IRQ 11 > >> Region 0: I/O ports at d000 [disabled] [size=256] > >> Capabilities: > >> Kernel driver in use: pci-stub > >> Kernel modules: snd-virtuoso > >> > >> > >> /usr/bin/qemu-system-x86_64 -cpu host -m 8192 -boot c -hda > >> /var/lib/libvirt/images/Win7.img -device pci-assign,host=02:00.0 -device > >> pci-assign,host=03:04.0 > >> Device assignment only supports endpoint assignment, device type 7 > >> qemu-system-x86_64: -device pci-assign,host=02:00.0: Device 'pci-assign' > >> could not be initialized > >> > >> root@kvm-xen:~# /usr/bin/qemu-system-x86_64 -cpu host -m 8192 -boot c > >> -hda /var/lib/libvirt/images/Win7.img -device > >> pci-assign,host=03:04.0Failed to assign irq for "(null)": Input/output error > >> Perhaps you are assigning a device that shares an IRQ with another device? > >> qemu-system-x86_64: -device pci-assign,host=03:04.0: Device 'pci-assign' > >> could not be initialized > > Either your distro isn't shipping a version of kvm that supports > > interrupt sharing on PCI 2.3 complaint devices (likely) or your device > > doesn't support PCI 2.3 INTx disable (possible). You either need to > > unbind any other devices that may be sharing IRQ 11 with this device > > from their driver or upgrade your kernel and qemu-kvm. Thanks, > > > > Alex > > > >