@@ -1419,6 +1419,7 @@ struct kvm_irq_routing_entry {
struct kvm_irq_routing_irqchip irqchip;
struct kvm_irq_routing_msi msi;
struct kvm_irq_routing_s390_adapter adapter;
+ struct kvm_irq_routing_extended_msi ext_msi;
__u32 pad[8];
} u;
};
@@ -1427,6 +1428,7 @@ struct kvm_irq_routing_entry {
#define KVM_IRQ_ROUTING_IRQCHIP 1
#define KVM_IRQ_ROUTING_MSI 2
#define KVM_IRQ_ROUTING_S390_ADAPTER 3
+#define KVM_IRQ_ROUTING_EXTENDED_MSI 4
No flags are specified so far, the corresponding field must be set to zero.
@@ -1442,6 +1444,13 @@ struct kvm_irq_routing_msi {
__u32 pad;
};
+struct kvm_irq_routing_extended_msi {
+ __u32 address_lo;
+ __u32 address_hi;
+ __u32 data;
+ __u32 devid;
+};
+
struct kvm_irq_routing_s390_adapter {
__u64 ind_addr;
__u64 summary_addr;
@@ -829,6 +829,13 @@ struct kvm_irq_routing_msi {
__u32 pad;
};
+struct kvm_irq_routing_extended_msi {
+ __u32 address_lo;
+ __u32 address_hi;
+ __u32 data;
+ __u32 devid;
+};
+
struct kvm_irq_routing_s390_adapter {
__u64 ind_addr;
__u64 summary_addr;
@@ -841,6 +848,7 @@ struct kvm_irq_routing_s390_adapter {
#define KVM_IRQ_ROUTING_IRQCHIP 1
#define KVM_IRQ_ROUTING_MSI 2
#define KVM_IRQ_ROUTING_S390_ADAPTER 3
+#define KVM_IRQ_ROUTING_EXTENDED_MSI 4
struct kvm_irq_routing_entry {
__u32 gsi;
@@ -851,6 +859,7 @@ struct kvm_irq_routing_entry {
struct kvm_irq_routing_irqchip irqchip;
struct kvm_irq_routing_msi msi;
struct kvm_irq_routing_s390_adapter adapter;
+ struct kvm_irq_routing_extended_msi ext_msi;
__u32 pad[8];
} u;
};
On ARM, the MSI msg (address and data) comes along with out-of-band device ID information. The device ID encodes the device that composes the MSI msg. Let's create a new routing entry structure that enables to encode that information on top of standard MSI message Signed-off-by: Eric Auger <eric.auger@linaro.org> --- Documentation/virtual/kvm/api.txt | 9 +++++++++ include/uapi/linux/kvm.h | 9 +++++++++ 2 files changed, 18 insertions(+)