Reviewed-by: Eric Auger <eric.auger@xxxxxxxxxx> On 05/29/2015 11:53 AM, Andre Przywara wrote: > The ARM GICv3 ITS MSI controller requires a device ID to be able to > assign the proper interrupt vector. On real hardware, this ID is > sampled from the bus. To be able to emulate an ITS controller, extend > the KVM MSI interface to let userspace provide such a device ID. For > PCI devices, the device ID is simply the 16-bit bus-device-function > triplet, which should be easily available to the userland tool. > > Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx> > --- > Documentation/virtual/kvm/api.txt | 8 ++++++-- > include/uapi/linux/kvm.h | 4 +++- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt > index 9fa2bf8..891d64a 100644 > --- a/Documentation/virtual/kvm/api.txt > +++ b/Documentation/virtual/kvm/api.txt > @@ -2121,10 +2121,14 @@ struct kvm_msi { > __u32 address_hi; > __u32 data; > __u32 flags; > - __u8 pad[16]; > + __u32 devid; > + __u8 pad[12]; > }; > > -No flags are defined so far. The corresponding field must be 0. > +flags: KVM_MSI_VALID_DEVID: devid is valid, otherwise ignored. > +devid: If KVM_MSI_VALID_DEVID is set, contains a value to identify the device > + that wrote the MSI message. For PCI, this is usually a BFD > + identifier in the lower 16 bits. > > > 4.71 KVM_CREATE_PIT2 > diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h > index 4b60056..2a23705 100644 > --- a/include/uapi/linux/kvm.h > +++ b/include/uapi/linux/kvm.h > @@ -965,12 +965,14 @@ struct kvm_one_reg { > __u64 addr; > }; > > +#define KVM_MSI_VALID_DEVID (1U << 0) > struct kvm_msi { > __u32 address_lo; > __u32 address_hi; > __u32 data; > __u32 flags; > - __u8 pad[16]; > + __u32 devid; > + __u8 pad[12]; > }; > > struct kvm_arm_device_addr { > -- 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