kvm.vger.kernel.org archive mirror
 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 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).