All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Fedin <p.fedin@samsung.com>
To: 'Andre Przywara' <andre.przywara@arm.com>,
	'Paolo Bonzini' <pbonzini@redhat.com>,
	'Christoffer Dall' <christoffer.dall@linaro.org>
Cc: eric.auger@st.com, kvm@vger.kernel.org,
	'Marc Zyngier' <Marc.Zyngier@arm.com>,
	linux-kernel@vger.kernel.org, kvmarm@lists.cs.columbia.edu,
	linux-arm-kernel@lists.infradead.org
Subject: RE: [PATCH 1/7] KVM: api: add kvm_irq_routing_extended_msi
Date: Tue, 07 Jul 2015 10:16:39 +0300	[thread overview]
Message-ID: <014c01d0b884$deff46d0$9cfdd470$@samsung.com> (raw)
In-Reply-To: <559AA0D6.7070703@arm.com>

 Hello!

> Wouldn't:
>     if (kvm_vm_check_extension(s, KVM_CAP_MSI_DEVID)) {
>         kroute.flags = KVM_MSI_VALID_DEVID;
>         kroute.u.msi.devid = (pci_bus_num(dev->bus) << 8) | dev->devfn;
>     }
> 
> be saner (without a global variable)?

 No it would not, because:
a) kvm_vm_check_extension() calls ioctl every time, therefore it's slow. But, well, doesn't really
matter because it's possible to check for the capability once in generic code, and cache it.
b) Capability is a global thing as far as i understand. The kernel either has it, or doesn't have.
However, whether we want this flag or not, depends also on what GIC model we use. GICv2(m) doesn't
want it, GICv3 does. qemu actually has two sets of flags: one set actually specifies capabilities,
another set enables use of these capabilities.
 But, well, you can make GICv2 kernel code simply ignoring it instead of bailing out if flags != 0.
And add the capability for ARM64 architecture (ARM32 can't use GICv3, can it?). And this will work
and it'll be OK. So, i'm not against it, and if you want it, you can do it. I just want to point
that it is not strictly necessary to add new APIs, because existing ones are pretty much enough.
But, you are the architects here, so you of course can do it if you want. It's just me being not a
big fan of adding APIs without which it's completely possible to live.

 Below i'm answering to Eric's comment, because my reply is tightly coupled with this one.

> So not sure whether we eventually concluded;-)
> - introduce a KVM_CAP_MSI_DEVID capability? All OK except Pavel not
>  convinced?

 See above. I'm not against it, i just don't think it's necessary. You can do it if you want, it
actually won't change things much.

> - userspaces puts the devid in struct kvm_irq_routing_msi pad field:
> consensus (we do not intrduce a new kvm_irq_routing_ext_msi)

 Yes.

> - userspace tells it conveyed a devid by setting
> A) the kvm_irq_routing_entry's field?
> B) the kvm_irq_routing_entry's type
> no consensus. If there is a cap, does it really matter?

 It has absolutely nothing to do with the cap. My argument here is the same as above again - why
adding new API's / definitions? We already have KVM_MSI_VALID_DEVID and we already have 'flags'
field. Using them would just make the API more consistent because KVM_SIGNAL_MSI already uses them
in absolutely the same manner. That's my point and nothing more.

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia

WARNING: multiple messages have this Message-ID (diff)
From: p.fedin@samsung.com (Pavel Fedin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/7] KVM: api: add kvm_irq_routing_extended_msi
Date: Tue, 07 Jul 2015 10:16:39 +0300	[thread overview]
Message-ID: <014c01d0b884$deff46d0$9cfdd470$@samsung.com> (raw)
In-Reply-To: <559AA0D6.7070703@arm.com>

 Hello!

> Wouldn't:
>     if (kvm_vm_check_extension(s, KVM_CAP_MSI_DEVID)) {
>         kroute.flags = KVM_MSI_VALID_DEVID;
>         kroute.u.msi.devid = (pci_bus_num(dev->bus) << 8) | dev->devfn;
>     }
> 
> be saner (without a global variable)?

 No it would not, because:
a) kvm_vm_check_extension() calls ioctl every time, therefore it's slow. But, well, doesn't really
matter because it's possible to check for the capability once in generic code, and cache it.
b) Capability is a global thing as far as i understand. The kernel either has it, or doesn't have.
However, whether we want this flag or not, depends also on what GIC model we use. GICv2(m) doesn't
want it, GICv3 does. qemu actually has two sets of flags: one set actually specifies capabilities,
another set enables use of these capabilities.
 But, well, you can make GICv2 kernel code simply ignoring it instead of bailing out if flags != 0.
And add the capability for ARM64 architecture (ARM32 can't use GICv3, can it?). And this will work
and it'll be OK. So, i'm not against it, and if you want it, you can do it. I just want to point
that it is not strictly necessary to add new APIs, because existing ones are pretty much enough.
But, you are the architects here, so you of course can do it if you want. It's just me being not a
big fan of adding APIs without which it's completely possible to live.

 Below i'm answering to Eric's comment, because my reply is tightly coupled with this one.

> So not sure whether we eventually concluded;-)
> - introduce a KVM_CAP_MSI_DEVID capability? All OK except Pavel not
>  convinced?

 See above. I'm not against it, i just don't think it's necessary. You can do it if you want, it
actually won't change things much.

> - userspaces puts the devid in struct kvm_irq_routing_msi pad field:
> consensus (we do not intrduce a new kvm_irq_routing_ext_msi)

 Yes.

> - userspace tells it conveyed a devid by setting
> A) the kvm_irq_routing_entry's field?
> B) the kvm_irq_routing_entry's type
> no consensus. If there is a cap, does it really matter?

 It has absolutely nothing to do with the cap. My argument here is the same as above again - why
adding new API's / definitions? We already have KVM_MSI_VALID_DEVID and we already have 'flags'
field. Using them would just make the API more consistent because KVM_SIGNAL_MSI already uses them
in absolutely the same manner. That's my point and nothing more.

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia

WARNING: multiple messages have this Message-ID (diff)
From: Pavel Fedin <p.fedin@samsung.com>
To: "'Andre Przywara'" <andre.przywara@arm.com>,
	"'Paolo Bonzini'" <pbonzini@redhat.com>,
	"'Christoffer Dall'" <christoffer.dall@linaro.org>
Cc: "'Eric Auger'" <eric.auger@linaro.org>,
	eric.auger@st.com, linux-arm-kernel@lists.infradead.org,
	"'Marc Zyngier'" <Marc.Zyngier@arm.com>,
	kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: RE: [PATCH 1/7] KVM: api: add kvm_irq_routing_extended_msi
Date: Tue, 07 Jul 2015 10:16:39 +0300	[thread overview]
Message-ID: <014c01d0b884$deff46d0$9cfdd470$@samsung.com> (raw)
In-Reply-To: <559AA0D6.7070703@arm.com>

 Hello!

> Wouldn't:
>     if (kvm_vm_check_extension(s, KVM_CAP_MSI_DEVID)) {
>         kroute.flags = KVM_MSI_VALID_DEVID;
>         kroute.u.msi.devid = (pci_bus_num(dev->bus) << 8) | dev->devfn;
>     }
> 
> be saner (without a global variable)?

 No it would not, because:
a) kvm_vm_check_extension() calls ioctl every time, therefore it's slow. But, well, doesn't really
matter because it's possible to check for the capability once in generic code, and cache it.
b) Capability is a global thing as far as i understand. The kernel either has it, or doesn't have.
However, whether we want this flag or not, depends also on what GIC model we use. GICv2(m) doesn't
want it, GICv3 does. qemu actually has two sets of flags: one set actually specifies capabilities,
another set enables use of these capabilities.
 But, well, you can make GICv2 kernel code simply ignoring it instead of bailing out if flags != 0.
And add the capability for ARM64 architecture (ARM32 can't use GICv3, can it?). And this will work
and it'll be OK. So, i'm not against it, and if you want it, you can do it. I just want to point
that it is not strictly necessary to add new APIs, because existing ones are pretty much enough.
But, you are the architects here, so you of course can do it if you want. It's just me being not a
big fan of adding APIs without which it's completely possible to live.

 Below i'm answering to Eric's comment, because my reply is tightly coupled with this one.

> So not sure whether we eventually concluded;-)
> - introduce a KVM_CAP_MSI_DEVID capability? All OK except Pavel not
>  convinced?

 See above. I'm not against it, i just don't think it's necessary. You can do it if you want, it
actually won't change things much.

> - userspaces puts the devid in struct kvm_irq_routing_msi pad field:
> consensus (we do not intrduce a new kvm_irq_routing_ext_msi)

 Yes.

> - userspace tells it conveyed a devid by setting
> A) the kvm_irq_routing_entry's field?
> B) the kvm_irq_routing_entry's type
> no consensus. If there is a cap, does it really matter?

 It has absolutely nothing to do with the cap. My argument here is the same as above again - why
adding new API's / definitions? We already have KVM_MSI_VALID_DEVID and we already have 'flags'
field. Using them would just make the API more consistent because KVM_SIGNAL_MSI already uses them
in absolutely the same manner. That's my point and nothing more.

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia



  parent reply	other threads:[~2015-07-07  7:05 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
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 [this message]
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='014c01d0b884$deff46d0$9cfdd470$@samsung.com' \
    --to=p.fedin@samsung.com \
    --cc=Marc.Zyngier@arm.com \
    --cc=andre.przywara@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.