From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
marc.zyngier@arm.com, christoffer.dall@linaro.org,
drjones@redhat.com, kvmarm@lists.cs.columbia.edu,
kvm@vger.kernel.org
Cc: andre.przywara@arm.com, pbonzini@redhat.com
Subject: [RFC v6 1/6] KVM: api: pass the devid in the msi routing entry
Date: Wed, 6 Jul 2016 10:47:50 +0200 [thread overview]
Message-ID: <1467794875-5237-2-git-send-email-eric.auger@redhat.com> (raw)
In-Reply-To: <1467794875-5237-1-git-send-email-eric.auger@redhat.com>
On ARM, the MSI msg (address and data) comes along with
out-of-band device ID information. The device ID encodes the
device that writes the MSI msg. Let's convey the device id in
kvm_irq_routing_msi and use KVM_MSI_VALID_DEVID flag value in
kvm_irq_routing_entry to indicate the msi devid is populated.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
---
v4 -> v5:
- some rephrasing in api.txt according to Christoffer's comments
v2 -> v3:
- replace usage of KVM_IRQ_ROUTING_EXTENDED_MSI type by
usage of KVM_MSI_VALID_DEVID flag
- add note about KVM_CAP_MSI_DEVID capability
v1 -> v2:
- devid id passed in kvm_irq_routing_msi instead of in
kvm_irq_routing_entry
RFC -> PATCH
- remove kvm_irq_routing_extended_msi and use union instead
---
Documentation/virtual/kvm/api.txt | 19 +++++++++++++++++--
include/uapi/linux/kvm.h | 5 ++++-
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index f60b137..0065c8e 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -1468,7 +1468,11 @@ struct kvm_irq_routing_entry {
#define KVM_IRQ_ROUTING_S390_ADAPTER 3
#define KVM_IRQ_ROUTING_HV_SINT 4
-No flags are specified so far, the corresponding field must be set to zero.
+flags:
+- KVM_MSI_VALID_DEVID: used along with KVM_IRQ_ROUTING_MSI
+ routing entry type, specifies that the devid field contains
+ a valid value.
+- zero otherwise
struct kvm_irq_routing_irqchip {
__u32 irqchip;
@@ -1479,9 +1483,20 @@ struct kvm_irq_routing_msi {
__u32 address_lo;
__u32 address_hi;
__u32 data;
- __u32 pad;
+ union {
+ __u32 pad;
+ __u32 devid;
+ };
};
+devid: If KVM_MSI_VALID_DEVID is set, contains a unique device identifier
+ for the device that wrote the MSI message.
+ For PCI, this is usually a BFD identifier in the lower 16 bits.
+
+The per-VM KVM_CAP_MSI_DEVID capability advertises the requirement to
+provide the device ID. If this capability is not set, userland cannot
+rely on the kernel to allow the KVM_MSI_VALID_DEVID flag being set.
+
struct kvm_irq_routing_s390_adapter {
__u64 ind_addr;
__u64 summary_addr;
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index d8c4c32..eb22208 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -879,7 +879,10 @@ struct kvm_irq_routing_msi {
__u32 address_lo;
__u32 address_hi;
__u32 data;
- __u32 pad;
+ union {
+ __u32 pad;
+ __u32 devid;
+ };
};
struct kvm_irq_routing_s390_adapter {
--
2.5.5
next prev parent reply other threads:[~2016-07-06 8:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-06 8:47 [RFC v6 0/6] KVM: arm/arm64: gsi routing support Eric Auger
2016-07-06 8:47 ` Eric Auger [this message]
2016-07-11 16:24 ` [RFC v6 1/6] KVM: api: pass the devid in the msi routing entry Andre Przywara
2016-07-06 8:47 ` [RFC v6 2/6] KVM: kvm_host: add devid in kvm_kernel_irq_routing_entry Eric Auger
2016-07-11 16:24 ` Andre Przywara
2016-07-06 8:47 ` [RFC v6 3/6] KVM: irqchip: convey devid to kvm_set_msi Eric Auger
2016-07-11 16:25 ` Andre Przywara
2016-07-06 8:47 ` [RFC v6 4/6] KVM: arm/arm64: enable irqchip routing Eric Auger
2016-07-07 17:20 ` Andrew Jones
2016-07-08 8:16 ` Auger Eric
2016-07-08 8:52 ` Andrew Jones
2016-07-08 20:55 ` Radim Krčmář
2016-07-14 9:36 ` Auger Eric
2016-07-11 16:25 ` Andre Przywara
2016-07-14 9:33 ` Auger Eric
2016-07-06 8:47 ` [RFC v6 5/6] KVM: arm/arm64: enable MSI routing Eric Auger
2016-07-11 16:26 ` Andre Przywara
2016-07-06 8:47 ` [RFC v6 6/6] KVM: arm: enable KVM_SIGNAL_MSI and " Eric Auger
2016-07-11 16:26 ` Andre Przywara
2016-07-14 10:00 ` Auger Eric
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=1467794875-5237-2-git-send-email-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=andre.przywara@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=drjones@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=marc.zyngier@arm.com \
--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.