From: Alexander Graf <agraf@suse.de>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: peter.maydell@linaro.org, kim.phillips@freescale.com,
eric.auger@st.com, Eric Auger <eric.auger@linaro.org>,
patches@linaro.org, a.rigo@virtualopensystems.com,
qemu-devel@nongnu.org, stuart.yoder@freescale.com,
christophe.barnichon@st.com, a.motakis@virtualopensystems.com,
kvmarm@lists.cs.columbia.edu, christoffer.dall@linaro.org
Subject: Re: [Qemu-devel] [RFC v3 10/10] vfio: Add irqfd support in platform device
Date: Thu, 26 Jun 2014 00:02:54 +0200 [thread overview]
Message-ID: <53AB470E.3000606@suse.de> (raw)
In-Reply-To: <1403733241.31091.56.camel@ul30vt.home>
On 25.06.14 23:54, Alex Williamson wrote:
> On Wed, 2014-06-25 at 23:35 +0200, Alexander Graf wrote:
>> On 02.06.14 09:49, Eric Auger wrote:
>>> This patch aims at optimizing IRQ handling using irqfd framework.
>>> It brings significant performance improvement over "traditional" IRQ
>>> handling introduced in :
>>> "vfio: Add initial IRQ support in platform device".
>>>
>>> This new IRQ handling method depends on kernel KVM irqfd/GSI routing
>>> capability.
>>>
>>> The IRQ handling method can be dynamically chosen (default is irqfd,
>>> if kernel supports it obviously). For example to disable irqfd
>>> handling, use:
>>>
>>> -device vfio-platform,vfio_device="fff51000.ethernet",\
>>> compat="calxeda/hb-xgmac",mmap-timeout-ms=110,irqfd=false\
>>>
>>> Performances are improved for the following reasons:
>>> - eventfds signalled by the VFIO platform driver are handled on
>>> kernel side by the KVM irqfd framework.
>>> - the end of interrupt(EOI) is trapped at GIC level and not at MMIO
>>> region level. As a reminder, in traditional IRQ handling QEMU
>>> assumed the first guest access to a device MMIO region after IRQ
>>> hit was the IRQ status register reset. This trap was approximate
>>> and obliged to swap to slow path after IRQ hit. A mmap timer
>>> mechanism enabled to swap back to fast path after the mmap period
>>> introducing extra complexity. Now GIC detects the completion of
>>> the virtual IRQ and signals a resampler eventfd on maintenance
>>> IRQ. The corresponding handler re-enables the physical IRQ.
>> Ah, so if you're using irqfd you do unmask the interrupt on EOI. Why not
>> without irqfd? And if the answer is "because it's too difficult" - why
>> support VFIO without irqfd at all then?
> Yes, it's too difficult, or at least it doesn't have sufficient ROI to
> try to plumb it through QEMU. What the hack in patch 5 enables is IRQ
> support that doesn't rely on a KVM irqchip. By not supporting it, we
> drop any hope of running tcg targets. I'll admit that a tcg target with
> an assigned device is mostly an unsupportable toy, but it's potentially
> useful for development and things like driver or even hardware
> debugging. IMHO, the EOI on device access is a nice, self contained
> solution, even if it ends up being rather sloppy with interrupts.
> Thanks,
Yeah, I didn't realize that this is the same mechanism we use for PCI.
You convinced me :).
Alex
prev parent reply other threads:[~2014-06-25 22:03 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-02 7:49 [Qemu-devel] [RFC v3 00/10] KVM platform device passthrough Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 01/10] hw/arm/virt: add a xgmac device Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 02/10] vfio: move hw/misc/vfio.c to hw/vfio/pci.c Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 03/10] vfio: add vfio-platform support Eric Auger
2014-06-25 21:21 ` Alexander Graf
2014-06-26 7:47 ` Eric Auger
2014-06-26 9:56 ` Alexander Graf
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 04/10] vfio: simplifed DPRINTF calls using device name Eric Auger
2014-06-25 21:22 ` Alexander Graf
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 05/10] vfio: Add initial IRQ support in platform device Eric Auger
2014-06-25 21:28 ` Alexander Graf
2014-06-25 21:40 ` Alex Williamson
2014-06-26 8:41 ` Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 06/10] virt: Assign a VFIO platform device with -device option Eric Auger
2014-06-25 21:30 ` Alexander Graf
2014-06-26 8:53 ` Eric Auger
2014-06-26 9:25 ` Alexander Graf
2014-06-26 9:30 ` Eric Auger
2014-06-25 22:28 ` Peter Maydell
2014-06-25 22:28 ` Alexander Graf
2014-06-26 7:39 ` Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 07/10] Add EXEC_FLAG to VFIO DMA mappings Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 08/10] Add AMBA devices support to VFIO Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 09/10] Always use eventfd as notifying mechanism Eric Auger
2014-06-02 7:49 ` [Qemu-devel] [RFC v3 10/10] vfio: Add irqfd support in platform device Eric Auger
2014-06-25 21:35 ` Alexander Graf
2014-06-25 21:54 ` Alex Williamson
2014-06-25 22:02 ` Alexander Graf [this message]
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=53AB470E.3000606@suse.de \
--to=agraf@suse.de \
--cc=a.motakis@virtualopensystems.com \
--cc=a.rigo@virtualopensystems.com \
--cc=alex.williamson@redhat.com \
--cc=christoffer.dall@linaro.org \
--cc=christophe.barnichon@st.com \
--cc=eric.auger@linaro.org \
--cc=eric.auger@st.com \
--cc=kim.phillips@freescale.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=patches@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stuart.yoder@freescale.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).