All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: Paul Mackerras <paulus@samba.org>
Cc: Eric Auger <eric.auger@linaro.org>,
	Antonios Motakis <a.motakis@virtualopensystems.com>,
	"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
	Marc Zyngier <marc.zyngier@arm.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	Christoffer Dall <christoffer.dall@linaro.org>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: Coupling between KVM_IRQFD and KVM_SET_GSI_ROUTING?
Date: Tue, 24 Jun 2014 12:40:39 +0200	[thread overview]
Message-ID: <53A955A7.4060101@suse.de> (raw)
In-Reply-To: <20140624094713.GA24698@iris.ozlabs.ibm.com>


On 24.06.14 11:47, Paul Mackerras wrote:
> On Mon, Jun 23, 2014 at 06:47:51PM +0200, Alexander Graf wrote:
>> On 17.06.14 13:39, Eric Auger wrote:
>>> Hello,
>>>
>>> I have a question related to KVM_IRQFD and KVM_SET_GSI_ROUTING ioctl
>>> relationship.
>>>
>>> When reading the KVM API documentation I do not understand there is any
>>> dependency between KVM_IRQFD and KVM_SET_GSI_ROUTING. According to the
>>> text it seems only the gsi field is used and interpreted as the irqchip pin.
>>>
>>> However irqchip.c kvm_set_irq code relies on an existing and not dummy
>>> routing table.
>>>
>>> My question is: does anyone agree on the fact the user-side must set a
>>> consistent routing table using KVM_SET_GSI_ROUTING before using
>>> KVM_IRQFD? The other alternative would have been to build a default
>>> identity GSI routing table in the kernel (gsi = irqchip.pin).
>> I untangled irqfd support from the x86 ioapic emulation a while back. When I
>> looked at it, I didn't see any easy way to split it out from the routing
>> too, so I kept that dependency in.
>>
>> If you look at the code, you will see that the irq routing entry is used as
>> token for an irqfd. So every irqfd only knows its routing table entry,
>> nothing else.
> As far as I can see, the routing table entry is used for only two
> things: to tell whether the interrupt is an MSI or LSI, and to pass to
> kvm_set_msi.
>
> One way to tackle the problem would be to abstract out the routing
> table lookup into a function in irqchip.c, rather than having it
> open-coded in irqfd_update.  Then, if you don't want to have the

You could also create it along with the irqfd state struct. So instead of

   kzalloc(sizeof(*irqfd), GFP_KERNEL);

we could do

   kzalloc(sizeof(*irqfd) + sizeof(struct kvm_kernel_irq_routing_entry), 
GFP_KERNEL);

and point the routing entry to the inline irqfd one. We'd lose the 
ability to change any routings with that construct, but I think that's 
ok for irq controllers that are not configurable.

Alternatively, we could also have a single routing entry that is a 
wildcard match, ranging from say LSI [x...y]. The irqfd structure would 
then need to carry a local payload to define an offset inside that 
wildcard routing entry.


Alex


  reply	other threads:[~2014-06-24 10:40 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-17 11:39 Coupling between KVM_IRQFD and KVM_SET_GSI_ROUTING? Eric Auger
2014-06-19 14:02 ` Eric Auger
2014-06-23 16:47 ` Alexander Graf
2014-06-24  9:47   ` Paul Mackerras
2014-06-24 10:40     ` Alexander Graf [this message]
2014-06-24 15:05       ` Eric Auger
2014-06-24 15:47         ` Alexander Graf
2014-06-24 16:11           ` Eric Auger

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=53A955A7.4060101@suse.de \
    --to=agraf@suse.de \
    --cc=a.motakis@virtualopensystems.com \
    --cc=christoffer.dall@linaro.org \
    --cc=eric.auger@linaro.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=marc.zyngier@arm.com \
    --cc=paulus@samba.org \
    --cc=pbonzini@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.