All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
	avi@redhat.com, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, jan.kiszka@siemens.com
Subject: Re: [PATCH v2 5/6] kvm: KVM_EOIFD, an eventfd for EOIs
Date: Thu, 28 Jun 2012 17:08:04 +0300	[thread overview]
Message-ID: <20120628140804.GE2596@redhat.com> (raw)
In-Reply-To: <20120628131140.GB13724@redhat.com>

On Thu, Jun 28, 2012 at 04:11:40PM +0300, Michael S. Tsirkin wrote:
> On Wed, Jun 27, 2012 at 09:55:44PM -0600, Alex Williamson wrote:
> > On Wed, 2012-06-27 at 17:51 +0300, Gleb Natapov wrote:
> > > On Wed, Jun 27, 2012 at 08:29:04AM -0600, Alex Williamson wrote:
> > > > On Wed, 2012-06-27 at 16:58 +0300, Gleb Natapov wrote:
> > > > > On Tue, Jun 26, 2012 at 11:10:08PM -0600, Alex Williamson wrote:
> > > > > > This new ioctl enables an eventfd to be triggered when an EOI is
> > > > > > written for a specified irqchip pin.  By default this is a simple
> > > > > > notification, but we can also tie the eoifd to a level irqfd, which
> > > > > > enables the irqchip pin to be automatically de-asserted on EOI.
> > > > > > This mode is particularly useful for device-assignment applications
> > > > > > where the unmask and notify triggers a hardware unmask.  The default
> > > > > > mode is most applicable to simple notify with no side-effects for
> > > > > > userspace usage, such as Qemu.
> > > > > > 
> > > > > > Here we make use of the reference counting of the _irq_source
> > > > > > object allowing us to share it with an irqfd and cleanup regardless
> > > > > > of the release order.
> > > > > > 
> > > > > > Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> > > > > > ---
> > > > > > 
> > > > > >  Documentation/virtual/kvm/api.txt |   24 +++++
> > > > > >  arch/x86/kvm/x86.c                |    1 
> > > > > >  include/linux/kvm.h               |   14 +++
> > > > > >  include/linux/kvm_host.h          |   13 +++
> > > > > >  virt/kvm/eventfd.c                |  189 +++++++++++++++++++++++++++++++++++++
> > > > > >  virt/kvm/kvm_main.c               |   11 ++
> > > > > >  6 files changed, 250 insertions(+), 2 deletions(-)
> > > > > > 
> > > > > > diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
> > > > > > index b216709..87a2558 100644
> > > > > > --- a/Documentation/virtual/kvm/api.txt
> > > > > > +++ b/Documentation/virtual/kvm/api.txt
> > > > > > @@ -1987,6 +1987,30 @@ interrupts with those injected through KVM_IRQ_LINE.  IRQFDs created
> > > > > >  with KVM_IRQFD_FLAG_LEVEL must also set this flag when de-assiging.
> > > > > >  KVM_IRQFD_FLAG_LEVEL support is indicated by KVM_CAP_IRQFD_LEVEL.
> > > > > >  
> > > > > > +4.77 KVM_EOIFD
> > > > > > +
> > > > > > +Capability: KVM_CAP_EOIFD
> > > > > > +Architectures: x86
> > > > > > +Type: vm ioctl
> > > > > > +Parameters: struct kvm_eoifd (in)
> > > > > > +Returns: 0 on success, -1 on error
> > > > > > +
> > > > > > +KVM_EOIFD allows userspace to receive EOI notification through an
> > > > > > +eventfd for level triggered irqchip interrupts.  Behavior for edge
> > > > > > +triggered interrupts is undefined.  kvm_eoifd.fd specifies the eventfd
> > > > > Lets make it defined. EOI notification can be used by userspace to fix
> > > > > time drift due to lost interrupts. But than userspace needs to know
> > > > > which vcpu did EOI.
> > > > 
> > > > Hmm, do we need an additional flag and field in kvm_eoifd to filter by
> > > > vCPU then?
> > > > 
> > > This will be enough for a use case I am aware of. Don't know if this
> > > interface is generic enough for all possible use cases.
> > 
> > That's generally a hard prediction to make ;)  We currently don't pass a
> > kvm_vcpu anywhere close to the irq ack notifier.  The ioapic path could
> > be relatively trivial, but the pic path is a bit further disconnected.
> > If we had that plumbing, a KVM_CAP plus vcpu filter flag and specifying
> > the vcpu using some of the padding space seems like it's sufficient.
> > I'll drop mention of level-only from the description, but the plumbing
> > and vcpu filtering can be a follow-on.  Thanks,
> > 
> > Alex
> 
> If we don't implement what's needed for timedrift to be fixed,
> then IMO it's better to simply require an IRQFD for EOIFD for now,
> and limit this to level. Otherwise when we actually try to implement
> we might find issues.
> 
> Another reason to explicitly say EOI is not supported for edge is that
> EOI might not get invoked at all with PV EOI.
> 
Good point, but easily addressable by disabling PV EOI for a GSI that
has EOI notifier registered.

--
			Gleb.

  reply	other threads:[~2012-06-28 14:08 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-27  5:08 [PATCH v2 0/6] kvm: level triggered irqfd support Alex Williamson
2012-06-27  5:09 ` [PATCH v2 1/6] kvm: Pass kvm_irqfd to functions Alex Williamson
2012-06-27  9:35   ` Michael S. Tsirkin
2012-06-27 14:30     ` Alex Williamson
2012-06-27 14:24   ` Cornelia Huck
2012-06-28  8:38     ` Michael S. Tsirkin
2012-06-28  9:03       ` Cornelia Huck
2012-06-28  9:34         ` Michael S. Tsirkin
2012-06-28 12:00           ` Cornelia Huck
2012-06-28 12:09             ` Michael S. Tsirkin
2012-06-28 16:51               ` Cornelia Huck
2012-06-28 16:56                 ` Michael S. Tsirkin
2012-06-29 15:14       ` Alex Williamson
2012-06-27  5:09 ` [PATCH v2 2/6] kvm: Add missing KVM_IRQFD API documentation Alex Williamson
2012-06-27  9:53   ` Michael S. Tsirkin
2012-06-27  5:09 ` [PATCH v2 3/6] kvm: Sanitize KVM_IRQFD flags Alex Williamson
2012-06-27  9:21   ` Michael S. Tsirkin
2012-06-27 20:12     ` Alex Williamson
2012-06-27 20:22       ` Michael S. Tsirkin
2012-06-28 12:35     ` Avi Kivity
2012-06-27  5:09 ` [PATCH v2 4/6] kvm: Extend irqfd to support level interrupts Alex Williamson
2012-06-27  9:34   ` Michael S. Tsirkin
2012-06-27 21:19     ` Alex Williamson
2012-06-28 12:41       ` Avi Kivity
2012-06-27  9:51   ` Michael S. Tsirkin
2012-06-27 20:59     ` Alex Williamson
2012-06-27 21:14       ` Michael S. Tsirkin
2012-06-27 21:28         ` Alex Williamson
2012-06-27 22:28           ` Michael S. Tsirkin
2012-06-28  3:52             ` Alex Williamson
2012-06-28  8:29               ` Michael S. Tsirkin
2012-06-29 15:13                 ` Alex Williamson
2012-06-27 15:26   ` Michael S. Tsirkin
2012-06-27 22:04     ` Alex Williamson
2012-06-27 22:31       ` Michael S. Tsirkin
2012-06-28  6:34         ` Gleb Natapov
2012-06-28  8:34           ` Michael S. Tsirkin
2012-06-28  8:35             ` Gleb Natapov
2012-06-28  8:41               ` Michael S. Tsirkin
2012-06-28  8:46                 ` Gleb Natapov
2012-06-28  8:48                   ` Michael S. Tsirkin
2012-06-28  8:53                     ` Gleb Natapov
2012-06-29 22:27                   ` Alex Williamson
2012-07-01  7:34                     ` Gleb Natapov
2012-06-27  5:10 ` [PATCH v2 5/6] kvm: KVM_EOIFD, an eventfd for EOIs Alex Williamson
2012-06-27  9:49   ` Michael S. Tsirkin
2012-06-27 13:58   ` Gleb Natapov
2012-06-27 14:29     ` Alex Williamson
2012-06-27 14:51       ` Gleb Natapov
2012-06-28  3:55         ` Alex Williamson
2012-06-28 13:11           ` Michael S. Tsirkin
2012-06-28 14:08             ` Gleb Natapov [this message]
2012-06-28 16:55               ` Michael S. Tsirkin
2012-06-27 15:20   ` Michael S. Tsirkin
2012-06-28 19:29   ` Michael S. Tsirkin
2012-06-29 15:09     ` Alex Williamson
2012-06-29 15:12       ` Alex Williamson
2012-06-27  5:10 ` [PATCH v2 6/6] kvm: Level IRQ de-assert for KVM_IRQFD Alex Williamson
2012-06-28 12:59   ` Avi Kivity
2012-06-29 15:39     ` Alex Williamson
2012-06-27  9:15 ` [PATCH v2 0/6] kvm: level triggered irqfd support Michael S. Tsirkin
2012-06-27  9:58 ` Michael S. Tsirkin
2012-06-27 14:33   ` Alex Williamson
2012-06-28  8:42     ` Michael S. Tsirkin

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=20120628140804.GE2596@redhat.com \
    --to=gleb@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=avi@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@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.