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@xxxxxxxxxx> --- Documentation/virtual/kvm/api.txt | 9 +++++++++ include/uapi/linux/kvm.h | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index d20fd94..bcec91e 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt @@ -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; diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 2a23705..e3f65a0 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h @@ -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; }; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html