From: Andre Przywara <andre.przywara@arm.com>
To: Christoffer Dall <christoffer.dall@linaro.org>,
"pbonzini@redhat.com" <pbonzini@redhat.com>
Cc: "eric.auger@st.com" <eric.auger@st.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
Marc Zyngier <Marc.Zyngier@arm.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 1/7] KVM: api: add kvm_irq_routing_extended_msi
Date: Mon, 6 Jul 2015 11:05:26 +0100 [thread overview]
Message-ID: <559A52E6.5050402@arm.com> (raw)
In-Reply-To: <20150706093026.GA11590@cbox>
Hi Christoffer,
On 06/07/15 10:30, Christoffer Dall wrote:
> On Mon, Jul 06, 2015 at 09:30:20AM +0100, Andre Przywara wrote:
>> Hi Pavel,
>>
>> On 06/07/15 07:42, Pavel Fedin wrote:
>>> Hello!
>>>
>>>> I like this approach, but it runs into problems:
>>>> As you read above the current documentation says that the flags field
>>>> must be zero and the current KVM_SET_GSI_ROUTING handler bails out if it
>>>> isn't. So userland would need to know whether it's safe to set that
>>>> field.
>>>
>>> This problem does not exist because:
>>> a) Older platforms do not need this flag, so they expect to get zero.
>>> b) ARM64 + GICv3 platform cannot work without this flag.
>>>
>>> This is perfectly OK combination IMO. Userland just knows, whether it needs to supply device ID or
>>> not. For example, my modified qemu now has kvm_msi_flags global variable which defaults to 0. ITS
>>> code, then, if activated, changes it to KVM_MSI_VALID_DEVID, and qemu starts supplying device IDs to
>>> the related calls.
>>
>> Well, I had this solution before in kvmtool: If ARM && ITS then set the
>> flag. But I wasn't really happy with this, as the IRQ routing, setup and
>> injection code is rather architecture agnostic (implementing the generic
>> KVM interface), so spraying in some architecture hacks sounded not very
>> elegant.
>> Also as the flag describes a rather generic feature (provide an unique
>> device ID), I'd rather avoid to make this an ARM hack.
>>
>> That being said this is not a show stopper for me, so if the others are
>> happy with this, I will go down your road.
>>
> There must be some way for userspace to discover if it's valid to set
> the flag or not; either through a well-defined error-code probing
> mechanism for KVM_SET_GSI_ROUTING or through advertising a capability.
Right, makes sense, I was wondering about this requirement earlier, but
couldn't find really good prior art in the code (KVM_GET_VCPU_EVENTS
seems to be bad example).
So I think we get along with a new VM specific capability like
KVM_CAP_MSIS_REQUIRE_DEVID. This isn't strictly a "capability" (as it's
more a requirement), but I guess it fits here anyway. It has to be
per-VM, as a GICv2M guest does not need it, but an ITS guest does.
We can use this very flag for both the KVM_SIGNAL_MSI and the
KVM_SET_GSI_ROUTING ioctl, so interface churn is kept minimal.
Does that make sense?
Actually I have implemented this already last week, I will send it out
along with a v2 of the ITS emulation later this week.
Cheers,
Andre.
WARNING: multiple messages have this Message-ID (diff)
From: andre.przywara@arm.com (Andre Przywara)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/7] KVM: api: add kvm_irq_routing_extended_msi
Date: Mon, 6 Jul 2015 11:05:26 +0100 [thread overview]
Message-ID: <559A52E6.5050402@arm.com> (raw)
In-Reply-To: <20150706093026.GA11590@cbox>
Hi Christoffer,
On 06/07/15 10:30, Christoffer Dall wrote:
> On Mon, Jul 06, 2015 at 09:30:20AM +0100, Andre Przywara wrote:
>> Hi Pavel,
>>
>> On 06/07/15 07:42, Pavel Fedin wrote:
>>> Hello!
>>>
>>>> I like this approach, but it runs into problems:
>>>> As you read above the current documentation says that the flags field
>>>> must be zero and the current KVM_SET_GSI_ROUTING handler bails out if it
>>>> isn't. So userland would need to know whether it's safe to set that
>>>> field.
>>>
>>> This problem does not exist because:
>>> a) Older platforms do not need this flag, so they expect to get zero.
>>> b) ARM64 + GICv3 platform cannot work without this flag.
>>>
>>> This is perfectly OK combination IMO. Userland just knows, whether it needs to supply device ID or
>>> not. For example, my modified qemu now has kvm_msi_flags global variable which defaults to 0. ITS
>>> code, then, if activated, changes it to KVM_MSI_VALID_DEVID, and qemu starts supplying device IDs to
>>> the related calls.
>>
>> Well, I had this solution before in kvmtool: If ARM && ITS then set the
>> flag. But I wasn't really happy with this, as the IRQ routing, setup and
>> injection code is rather architecture agnostic (implementing the generic
>> KVM interface), so spraying in some architecture hacks sounded not very
>> elegant.
>> Also as the flag describes a rather generic feature (provide an unique
>> device ID), I'd rather avoid to make this an ARM hack.
>>
>> That being said this is not a show stopper for me, so if the others are
>> happy with this, I will go down your road.
>>
> There must be some way for userspace to discover if it's valid to set
> the flag or not; either through a well-defined error-code probing
> mechanism for KVM_SET_GSI_ROUTING or through advertising a capability.
Right, makes sense, I was wondering about this requirement earlier, but
couldn't find really good prior art in the code (KVM_GET_VCPU_EVENTS
seems to be bad example).
So I think we get along with a new VM specific capability like
KVM_CAP_MSIS_REQUIRE_DEVID. This isn't strictly a "capability" (as it's
more a requirement), but I guess it fits here anyway. It has to be
per-VM, as a GICv2M guest does not need it, but an ITS guest does.
We can use this very flag for both the KVM_SIGNAL_MSI and the
KVM_SET_GSI_ROUTING ioctl, so interface churn is kept minimal.
Does that make sense?
Actually I have implemented this already last week, I will send it out
along with a v2 of the ITS emulation later this week.
Cheers,
Andre.
WARNING: multiple messages have this Message-ID (diff)
From: Andre Przywara <andre.przywara@arm.com>
To: Christoffer Dall <christoffer.dall@linaro.org>,
"pbonzini@redhat.com" <pbonzini@redhat.com>
Cc: Pavel Fedin <p.fedin@samsung.com>,
"'Eric Auger'" <eric.auger@linaro.org>,
"eric.auger@st.com" <eric.auger@st.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Marc Zyngier <Marc.Zyngier@arm.com>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/7] KVM: api: add kvm_irq_routing_extended_msi
Date: Mon, 6 Jul 2015 11:05:26 +0100 [thread overview]
Message-ID: <559A52E6.5050402@arm.com> (raw)
In-Reply-To: <20150706093026.GA11590@cbox>
Hi Christoffer,
On 06/07/15 10:30, Christoffer Dall wrote:
> On Mon, Jul 06, 2015 at 09:30:20AM +0100, Andre Przywara wrote:
>> Hi Pavel,
>>
>> On 06/07/15 07:42, Pavel Fedin wrote:
>>> Hello!
>>>
>>>> I like this approach, but it runs into problems:
>>>> As you read above the current documentation says that the flags field
>>>> must be zero and the current KVM_SET_GSI_ROUTING handler bails out if it
>>>> isn't. So userland would need to know whether it's safe to set that
>>>> field.
>>>
>>> This problem does not exist because:
>>> a) Older platforms do not need this flag, so they expect to get zero.
>>> b) ARM64 + GICv3 platform cannot work without this flag.
>>>
>>> This is perfectly OK combination IMO. Userland just knows, whether it needs to supply device ID or
>>> not. For example, my modified qemu now has kvm_msi_flags global variable which defaults to 0. ITS
>>> code, then, if activated, changes it to KVM_MSI_VALID_DEVID, and qemu starts supplying device IDs to
>>> the related calls.
>>
>> Well, I had this solution before in kvmtool: If ARM && ITS then set the
>> flag. But I wasn't really happy with this, as the IRQ routing, setup and
>> injection code is rather architecture agnostic (implementing the generic
>> KVM interface), so spraying in some architecture hacks sounded not very
>> elegant.
>> Also as the flag describes a rather generic feature (provide an unique
>> device ID), I'd rather avoid to make this an ARM hack.
>>
>> That being said this is not a show stopper for me, so if the others are
>> happy with this, I will go down your road.
>>
> There must be some way for userspace to discover if it's valid to set
> the flag or not; either through a well-defined error-code probing
> mechanism for KVM_SET_GSI_ROUTING or through advertising a capability.
Right, makes sense, I was wondering about this requirement earlier, but
couldn't find really good prior art in the code (KVM_GET_VCPU_EVENTS
seems to be bad example).
So I think we get along with a new VM specific capability like
KVM_CAP_MSIS_REQUIRE_DEVID. This isn't strictly a "capability" (as it's
more a requirement), but I guess it fits here anyway. It has to be
per-VM, as a GICv2M guest does not need it, but an ITS guest does.
We can use this very flag for both the KVM_SIGNAL_MSI and the
KVM_SET_GSI_ROUTING ioctl, so interface churn is kept minimal.
Does that make sense?
Actually I have implemented this already last week, I will send it out
along with a v2 of the ITS emulation later this week.
Cheers,
Andre.
next prev parent reply other threads:[~2015-07-06 9:54 UTC|newest]
Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-29 15:37 [PATCH 0/7] KVM: arm/arm64: gsi routing support Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` [PATCH 1/7] KVM: api: add kvm_irq_routing_extended_msi Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-07-02 7:26 ` Pavel Fedin
2015-07-02 7:26 ` Pavel Fedin
2015-07-02 7:26 ` Pavel Fedin
2015-07-02 8:41 ` Pavel Fedin
2015-07-02 8:41 ` Pavel Fedin
2015-07-02 14:50 ` Eric Auger
2015-07-02 14:50 ` Eric Auger
2015-07-02 14:50 ` Eric Auger
2015-07-02 14:49 ` Eric Auger
2015-07-02 14:49 ` Eric Auger
2015-07-02 14:49 ` Eric Auger
2015-07-02 15:14 ` Andre Przywara
2015-07-02 15:14 ` Andre Przywara
2015-07-02 15:14 ` Andre Przywara
2015-07-02 15:22 ` Eric Auger
2015-07-02 15:22 ` Eric Auger
2015-07-02 15:39 ` Pavel Fedin
2015-07-02 15:39 ` Pavel Fedin
2015-07-02 15:39 ` Pavel Fedin
2015-07-02 15:41 ` Eric Auger
2015-07-02 15:41 ` Eric Auger
2015-07-03 15:29 ` Pavel Fedin
2015-07-03 15:29 ` Pavel Fedin
2015-07-03 15:29 ` Pavel Fedin
2015-07-03 15:42 ` Eric Auger
2015-07-03 15:42 ` Eric Auger
2015-07-03 15:42 ` Eric Auger
2015-07-03 9:05 ` Andre Przywara
2015-07-03 9:05 ` Andre Przywara
2015-07-03 9:05 ` Andre Przywara
2015-07-03 15:53 ` Andre Przywara
2015-07-03 15:53 ` Andre Przywara
2015-07-03 15:53 ` Andre Przywara
2015-07-06 6:42 ` Pavel Fedin
2015-07-06 6:42 ` Pavel Fedin
2015-07-06 6:42 ` Pavel Fedin
2015-07-06 8:30 ` Andre Przywara
2015-07-06 8:30 ` Andre Przywara
2015-07-06 8:30 ` Andre Przywara
2015-07-06 9:30 ` Christoffer Dall
2015-07-06 9:30 ` Christoffer Dall
2015-07-06 9:30 ` Christoffer Dall
2015-07-06 10:05 ` Andre Przywara [this message]
2015-07-06 10:05 ` Andre Przywara
2015-07-06 10:05 ` Andre Przywara
2015-07-06 10:37 ` Christoffer Dall
2015-07-06 10:37 ` Christoffer Dall
2015-07-06 10:37 ` Christoffer Dall
2015-07-06 11:07 ` Paolo Bonzini
2015-07-06 11:07 ` Paolo Bonzini
2015-07-06 11:23 ` Andre Przywara
2015-07-06 11:23 ` Andre Przywara
2015-07-06 11:23 ` Andre Przywara
2015-07-06 11:51 ` Paolo Bonzini
2015-07-06 11:51 ` Paolo Bonzini
2015-07-06 13:32 ` Pavel Fedin
2015-07-06 13:32 ` Pavel Fedin
2015-07-06 15:01 ` Eric Auger
2015-07-06 15:01 ` Eric Auger
2015-07-06 15:01 ` Eric Auger
2015-07-06 15:52 ` Andre Przywara
2015-07-06 15:52 ` Andre Przywara
2015-07-06 15:52 ` Andre Przywara
2015-07-06 17:02 ` Eric Auger
2015-07-06 17:02 ` Eric Auger
2015-07-07 7:23 ` Pavel Fedin
2015-07-07 7:23 ` Pavel Fedin
2015-07-07 7:23 ` Pavel Fedin
2015-07-07 7:43 ` Eric Auger
2015-07-07 7:43 ` Eric Auger
2015-07-07 7:43 ` Eric Auger
2015-07-06 15:37 ` Andre Przywara
2015-07-06 15:37 ` Andre Przywara
2015-07-06 15:37 ` Andre Przywara
2015-07-06 15:54 ` Paolo Bonzini
2015-07-06 15:54 ` Paolo Bonzini
2015-07-06 15:54 ` Paolo Bonzini
2015-07-06 16:08 ` Andre Przywara
2015-07-06 16:08 ` Andre Przywara
2015-07-06 16:08 ` Andre Przywara
2015-07-07 7:16 ` Pavel Fedin
2015-07-07 7:16 ` Pavel Fedin
2015-07-07 7:16 ` Pavel Fedin
2015-07-07 10:02 ` Andre Przywara
2015-07-07 10:02 ` Andre Przywara
2015-07-07 10:02 ` Andre Przywara
2015-07-07 10:57 ` Pavel Fedin
2015-07-07 10:57 ` Pavel Fedin
2015-07-07 10:57 ` Pavel Fedin
2015-07-06 12:08 ` Christoffer Dall
2015-07-06 12:08 ` Christoffer Dall
2015-07-06 13:33 ` Pavel Fedin
2015-07-06 13:33 ` Pavel Fedin
2015-07-06 13:33 ` Pavel Fedin
2015-07-06 15:09 ` Andre Przywara
2015-07-06 15:09 ` Andre Przywara
2015-07-06 15:09 ` Andre Przywara
2015-06-29 15:37 ` [PATCH 2/7] KVM: kvm_host: add kvm_extended_msi Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-07-02 17:03 ` Andre Przywara
2015-07-02 17:03 ` Andre Przywara
2015-07-02 17:03 ` Andre Przywara
2015-06-29 15:37 ` [PATCH 3/7] KVM: irqchip: convey devid to kvm_set_msi Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` [PATCH 4/7] KVM: arm/arm64: enable irqchip routing Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-30 13:39 ` Andre Przywara
2015-06-30 13:39 ` Andre Przywara
2015-06-30 13:39 ` Andre Przywara
2015-06-30 14:02 ` Eric Auger
2015-06-30 14:02 ` Eric Auger
2015-06-30 14:02 ` Eric Auger
2015-06-29 15:37 ` [PATCH 5/7] KVM: arm/arm64: build a default routing table Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` [PATCH 6/7] KVM: arm/arm64: enable MSI routing Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` [PATCH 7/7] KVM: arm: implement kvm_set_msi by gsi direct mapping Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-06-29 15:37 ` Eric Auger
2015-07-02 7:53 ` Pavel Fedin
2015-07-02 7:53 ` Pavel Fedin
2015-07-02 15:02 ` Eric Auger
2015-07-02 15:02 ` Eric Auger
2015-07-02 15:02 ` Eric Auger
2015-07-02 15:37 ` Pavel Fedin
2015-07-02 15:37 ` Pavel Fedin
2015-07-02 15:37 ` Pavel Fedin
2015-07-02 17:10 ` Andre Przywara
2015-07-02 17:10 ` Andre Przywara
2015-07-02 17:10 ` Andre Przywara
2015-07-03 5:34 ` Eric Auger
2015-07-03 5:34 ` Eric Auger
2015-07-03 5:34 ` Eric Auger
2015-07-05 19:40 ` [PATCH 0/7] KVM: arm/arm64: gsi routing support Christoffer Dall
2015-07-05 19:40 ` Christoffer Dall
2015-07-05 19:40 ` Christoffer Dall
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=559A52E6.5050402@arm.com \
--to=andre.przywara@arm.com \
--cc=Marc.Zyngier@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=eric.auger@st.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.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.