kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Paul Mackerras <paulus@samba.org>,
	Christoffer Dall <c.dall@virtualopensystems.com>,
	Alexander Graf <agraf@suse.de>,
	"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	kvm-ppc <kvm-ppc@vger.kernel.org>
Subject: Re: [kvmarm] [RFC PATCH 0/3] KVM: ARM: Get rid of hardcoded VGIC addresses
Date: Fri, 26 Oct 2012 13:00:42 +0200	[thread overview]
Message-ID: <508A6D5A.1030007@siemens.com> (raw)
In-Reply-To: <1351248264.12271.17.camel@pasglop>

On 2012-10-26 12:44, Benjamin Herrenschmidt wrote:
> On Fri, 2012-10-26 at 12:15 +0200, Paolo Bonzini wrote:
>>> Whether you want to do startup configuration and board wiring via
>>> the same ioctl that handles runtime state save/load/migration is
>>> a different question, of course.
>>
>> QEMU's MSI-X routing is not x86-specific, so it should use the same
>> KVM_SET_GSI_ROUTING ioctl that x86 uses. 
> 
> Well, that's the thing, I haven't managed to figure that out so far, it
> looks very x86-specific to me. To begin with there's no such thing as a
> "GSI" in our world.
> 
> Basically we have a global interrupt number space. Interrupt numbers are
> 24-bit long quantities. On real HW, some bits are called the "BUID" and
> identify a given source controller and some bits are the interrupt
> within that source controller but that's fairly flexible and generally
> the OS doesn't care about it. The firmware sets up the mappings and
> tells us the final numbers via the device-tree.
> 
> Under a hypervisor, it's totally virtualized already so we show a flat
> 24 bit number space to the guest.
> 
> MSIs don't work exactly like x86 either. On real HW, we have a different
> MSI port per "partitionable endpoint" which are use purely for
> validation of access permission. The message itself contain the
> interrupt source number within the BUID of the bridge. A given bridge
> today can contains up to 256 of these on a P7IOC chip but upcoming stuff
> can have thousands. The final interrupt number seen by the OS is thus
> just that MSI message in the bottom bits and the BUID in the top bits.
> 
> Here too, under a hypervisor, it's all virtualized so qemu just gives 24
> bit numbers to the various emulated MSIs as part of the global interrupt
> number space.
> 
> I'm not sure how any of that would need kernel communication. All we
> need is to be able to associate a given global interrupt with an
> eventfd.

And at latest there you will need the IRQ routing infrastructure of KVM.
It tells KVM which "virtual IRQ" (badly named "GSI") triggers which
event at which input, e.g. a physical IRQ line at some IRQ controller or
a specific message at some MSI receiver. You shouldn't try to invent a
Power wheel here, rather tune the existing one to become more generic.
We could even try to get rid of that unfortunate GSI name (when leaving
aliases behind), though that is cosmetic.

> 
> I might just miss some subtleties here but so far I haven't been able to
> figure out how to "shoehorn" our stuff in the very x86-centric existing
> interfaces to the kernel APICs. In fact all that code is in a generic
> location in kvm but is really x86/ia64 centric and the interfaces seem
> to be as well.

That's not true in general, though you surely find a lot of traces and
still a few concrete x86 bits under virt/kvm.

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux

  reply	other threads:[~2012-10-26 11:00 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-14  0:04 [RFC PATCH 0/3] KVM: ARM: Get rid of hardcoded VGIC addresses Christoffer Dall
2012-10-14  0:04 ` [RFC PATCH 1/3] KVM: ARM: Introduce KVM_INIT_IRQCHIP ioctl Christoffer Dall
2012-10-17 20:21   ` Peter Maydell
2012-10-17 20:23     ` Christoffer Dall
2012-10-17 20:31       ` Peter Maydell
2012-10-17 20:39         ` Christoffer Dall
2012-10-18 12:20   ` Avi Kivity
2012-10-19 18:42     ` Christoffer Dall
2012-10-14  0:04 ` [RFC PATCH 2/3] KVM: ARM: Introduce KVM_SET_DEVICE_ADDRESS ioctl Christoffer Dall
2012-10-17 20:29   ` Peter Maydell
2012-10-19 18:46     ` Christoffer Dall
2012-10-19 20:24       ` Peter Maydell
2012-10-19 20:27         ` Christoffer Dall
2012-10-19 20:33           ` Christoffer Dall
2012-10-14  0:04 ` [RFC PATCH 3/3] KVM: ARM: Split KVM_CREATE_IRQCHIP and KVM_INIT_IRQCHIP Christoffer Dall
2012-10-18 11:15   ` Peter Maydell
2012-10-17 20:38 ` [kvmarm] [RFC PATCH 0/3] KVM: ARM: Get rid of hardcoded VGIC addresses Alexander Graf
2012-10-17 20:39   ` Christoffer Dall
2012-10-17 21:19     ` Benjamin Herrenschmidt
2012-10-17 22:10     ` Paul Mackerras
2012-10-17 23:58       ` Benjamin Herrenschmidt
2012-10-18 13:48         ` Christoffer Dall
2012-10-18 13:49           ` Alexander Graf
2012-10-18 15:25             ` Avi Kivity
2012-10-23 10:48           ` Jan Kiszka
2012-10-23 10:52             ` Peter Maydell
2012-10-23 11:00               ` Jan Kiszka
2012-10-23 11:04                 ` Peter Maydell
2012-10-23 11:08                   ` Jan Kiszka
2012-10-24  0:50             ` Paul Mackerras
2012-10-25 11:57               ` Jan Kiszka
2012-10-25 16:14               ` Paolo Bonzini
2012-10-25 16:32                 ` Jan Kiszka
2012-10-25 18:27                   ` Paolo Bonzini
2012-10-25 19:40                     ` Benjamin Herrenschmidt
2012-10-26  9:58                       ` Paolo Bonzini
2012-10-26 10:09                         ` Peter Maydell
2012-10-26 10:15                           ` Paolo Bonzini
2012-10-26 10:22                             ` Jan Kiszka
2012-10-26 10:44                             ` Benjamin Herrenschmidt
2012-10-26 11:00                               ` Jan Kiszka [this message]
2012-10-26 11:09                                 ` Benjamin Herrenschmidt
2012-10-26 11:57                                   ` Paolo Bonzini
2012-10-26 12:08                                     ` Peter Maydell
2012-10-26 12:41                                       ` Jan Kiszka
2012-10-26 20:21                                     ` Benjamin Herrenschmidt
2012-10-26 11:17                               ` Peter Maydell
2012-10-26 11:39                                 ` Benjamin Herrenschmidt
2012-10-26 12:39                                   ` Jan Kiszka
2012-10-26 20:45                                     ` Benjamin Herrenschmidt
2012-10-26 22:03                                       ` Benjamin Herrenschmidt
2012-10-27  8:06                                         ` Jan Kiszka
2012-10-27 10:01                                         ` Peter Maydell
2012-10-28 22:19                                           ` Benjamin Herrenschmidt
2012-10-26 10:37                         ` Benjamin Herrenschmidt
2012-10-26 10:40                           ` Paolo Bonzini
2012-10-26 10:47                             ` Benjamin Herrenschmidt
2012-10-26 11:47                               ` Paolo Bonzini
2012-10-25 19:39                 ` Benjamin Herrenschmidt

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=508A6D5A.1030007@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=agraf@suse.de \
    --cc=benh@kernel.crashing.org \
    --cc=c.dall@virtualopensystems.com \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=paulus@samba.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    /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).