From: Alex Williamson <alex.williamson@redhat.com>
To: Dana Goyette <DanaGoyette@gmail.com>
Cc: kvm@vger.kernel.org
Subject: Re: genirq: Flags mismatch irq 17. 00000000 (vfio-intx(0000:07:04.0)) vs. 00000000 (vfio-intx(0000:01:00.1))
Date: Fri, 10 Jan 2014 14:12:27 -0700 [thread overview]
Message-ID: <1389388347.3209.344.camel@bling.home> (raw)
In-Reply-To: <lapkhr$1uu$1@ger.gmane.org>
On Fri, 2014-01-10 at 12:18 -0800, Dana Goyette wrote:
> On 01/10/2014 09:33 AM, Alex Williamson wrote:
> > On Fri, 2014-01-10 at 08:23 -0800, Dana Goyette wrote:
> >> I'm using the SuperMicro X10SAT, kernel 3.13-rc5, with ACS override on
> >> Intel root ports.
> >>
> >> I'm trying to pass several devices to the same guest:
> >>
> >> 01:00.0 -- [1002:68be] Radeon HD 5750
> >> 01:00.1 -- [1002:aa58] HDMI Audio (not really needed)
> >> 07:04.0 -- [13f6:8788] Xonar D1/DX sound card, behind PEX8112
> >> 09:00.0 -- [1912:0014] Renesas uPD720201 (USB 3.0)
> >>
> >> When trying to start qemu with various combinations of those devices:
> >> vfio: Error: Failed to setup INTx fd: Device or resource busy
> >>
> >> Sound card conflicts with HDMI audio:
> >> genirq: Flags mismatch irq 17.
> >> 00000000 (vfio-intx(0000:07:04.0)) vs.
> >> 00000000 (vfio-intx(0000:01:00.1))
> >>
> >> USB controller conflicts with video card:
> >> genirq: Flags mismatch irq 16.
> >> 00000000 (vfio-intx(0000:09:00.0)) vs.
> >> 00000000 (vfio-intx(0000:01:00.0))
> >>
> >> On the ArchLinux forums, I was told that this means each device wants
> >> the interrupt line to itself.
> >>
> >> Oddly, the host locks up if I launch Xorg with 'radeon' and
> >> 'snd-virtuoso' both loaded. (Primary video is the Intel graphics.)
> >>
> >> These devices all work fine together using pci-assign, but pci-assign
> >> requires ejecting the Radeon before VM shutdown.
> >>
> >> VFIO allows me to start the VM if I forward only the sound card and the
> >> video card, but I really need the USB controller, as well.
> >>
> >> What can I do to forward those three devices via VFIO?
> >
> > Change slots until the interrupts don't conflict, maybe there's an
> > IO-APIC option you can enable in the BIOS, or get devices that properly
> > support PCI2.3 INTx disable. pci-assign tries to work around this by
> > using MSI to emulate INTx, but I'm not convinced that this doesn't
> > create more problems than it solves or I'd try to do the same with vfio.
> > The Xorg problem might also suggest there's an existing interrupt
> > routing problem on the system. It is surprising that you have so many
> > devices that doesn't support INTx disable, can you try running this
> > script on them:
> >
> > #!/bin/sh
> > # Usage $0 <PCI device>, ex: 9:00.0
> >
> > INTX=$(( 0x400 ))
> > ORIG=$(( 0x$(setpci -s $1 4.w) ))
> >
> > if [ $(( $INTX & $ORIG )) -ne 0 ]; then
> > echo "INTx disable supported and enabled on $1"
> > exit 0
> > fi
> >
> > NEW=$(printf %04x $(( $INTX | $ORIG )))
> > setpci -s $1 4.w=$NEW
> > NEW=$(( 0x$(setpci -s $1 4.w) ))
> >
> > if [ $(( $INTX & $NEW )) -ne 0 ]; then
> > echo "INTx disable support available on $1"
> > else
> > echo "INTx disable support NOT available on $1"
> > fi
> >
> > NEW=$(printf %04x $ORIG)
> > setpci -s $1 4.w=$NEW
> >
> After cold boot, without any attempts to run VM:
>
> Video card:
> INTx disable support available on 01:00.0
>
> HDMI Audio:
> INTx disable supported and enabled on 01:00.1
>
> USB:
> INTx disable supported and enabled on 09:00.0
>
> PEX8112 (sound card sits behind this):
> INTx disable support available on 06:00.0)
>
> Sound card:
> INTx disable support NOT available on 07:04.0
>
> If the sound card is the only one lacking this feature, then it seems
> odd that the USB controller is the one I have to remove for the VM to boot.
Please report the output of:
$ cat /sys/module/vfio_pci/parameters/nointxmask
I don't understand why your flags are 0 for all the devices, only the
sound card should have that.
> The lspci -nnvv listing for my current sound card is quite sparse:
>
> 07:04.0 Multimedia audio controller [0401]: C-Media Electronics Inc
> CMI8788 [Oxygen HD Audio] [13f6:8788]
> Subsystem: ASUSTeK Computer Inc. Virtuoso 100 (Xonar D1) [1043:834f]
> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Interrupt: pin A routed to IRQ 10
> Region 0: I/O ports at c000 [disabled] [size=256]
> Capabilities: [c0] Power Management version 2
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>
> I'm willing to purchase a different sound card if that will fix the
> problem. Does lspci (-v or -vv) tell you if INTx Disable is available?
No, lspci only reports the state of the DisINTx bit, not whether it's
supported.
next prev parent reply other threads:[~2014-01-10 21:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-10 16:23 genirq: Flags mismatch irq 17. 00000000 (vfio-intx(0000:07:04.0)) vs. 00000000 (vfio-intx(0000:01:00.1)) Dana Goyette
2014-01-10 17:33 ` Alex Williamson
2014-01-10 20:18 ` Dana Goyette
2014-01-10 21:12 ` Alex Williamson [this message]
2014-01-10 22:45 ` Dana Goyette
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1389388347.3209.344.camel@bling.home \
--to=alex.williamson@redhat.com \
--cc=DanaGoyette@gmail.com \
--cc=kvm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox