From: Jan Kiszka <jan.kiszka@web.de>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>, kvm <kvm@vger.kernel.org>
Subject: Re: Device assignment, shared IRQs, uio_pci_generic
Date: Sun, 31 Oct 2010 16:05:27 +0100 [thread overview]
Message-ID: <4CCD85B7.1030904@web.de> (raw)
In-Reply-To: <1288458364.2893.16.camel@x201>
[-- Attachment #1: Type: text/plain, Size: 2336 bytes --]
Am 30.10.2010 19:06, Alex Williamson wrote:
> On Sat, 2010-10-30 at 17:58 +0200, Jan Kiszka wrote:
>> Hi all,
>>
>> trying to pass some host device to a KVM guest (for driver hacking), I
>> ran into massive IRQ sharing issues on the host. Classic device
>> assignment refuses to work in this case. I remembered uio_pci_generic,
>> which I thought was once designed to resolve this conflict. But it isn't
>> used by KVM or qemu, is it?
>
> Nope, VFIO started out being based on it, but has since branched off.
> KVM has never made use of it.
>
>> So I crossed fingers and hacked IRQF_SHARED into
>> assigned_device_enable_host_intx. Effect as expected: assignment work,
>> host gets massive hick-ups (the graphic adapter is another user of this
>> line...).
>>
>> Are there already VFIO patches ready for testing that work with shared
>> IRQs as well? And/or would it make sense to integrate IRQ sharing via
>> PCI-level IRQ masking to the KVM core until VFIO becomes standard?
>
> There's a very old qemu VFIO patch floating around, but I plan to send
> out a new one this week, thus all the pre-patches I've been sending out.
> Adding PCI 2.3 interrupt disable support to KVM should be very possible,
> and I suspect fairly easy. Oddly, I've just been adding support for
> non-PCI 2.3 devices to VFIO so it can support all the old devices that
> KVM does already.
It wasn't that easy, and I'm still not 100% sure I did it all correctly:
I just passed my SD card reader to a Linux guest which shares IRQ with
five(!) other devices. That works well now (provided I disable SMIs -
device pass-through appears to be another trigger for my SMI-related
lockups under KVM, sigh).
Still not working here are ehci, ath9k and e1000e when passed through.
They receive IRQs, but somehow the Linux guest drivers are unhappy about
the device states (the e1000e detects "Hardware Unit Hang" e.g.). This
is independent of my patches. Anyone any ideas? Improper configurations
of the BIOS? I stumbled over this in the kernel log:
DMAR: BIOS has allocated no shadow GTT; disabling IOMMU for graphics
There were a few flaws in the current device assignment code /wrt host
IRQ type selection, both kernel and qemu-kvm are affected. Will try to
sort all my stuff next to send out patches.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]
next prev parent reply other threads:[~2010-10-31 15:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-30 15:58 Device assignment, shared IRQs, uio_pci_generic Jan Kiszka
2010-10-30 17:06 ` Alex Williamson
2010-10-31 15:05 ` Jan Kiszka [this message]
2010-11-01 11:27 ` Jan Kiszka
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=4CCD85B7.1030904@web.de \
--to=jan.kiszka@web.de \
--cc=alex.williamson@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.