On Thu, 2014-11-20 at 17:05 +0800, Feng Wu wrote:
> Add new group KVM_DEV_VFIO_INTERRUPT and command
> KVM_DEV_VFIO_DEVIE_POSTING_IRQ related to it.
> 
> This is used for VT-d Posted-Interrupts setup.

Eric proposed an interface for ARM forwarded interrupts[1] using group
KVM_DEV_VFIO_DEVICE with attributes KVM_DEV_VFIO_DEVICE_ASSIGN_IRQ and
KVM_DEV_VFIO_DEVICE_DEASSIGN_IRQ.  Why are we proposing yet another
group and attributes here?  Why can't we re-use the ones Eric proposes?

[1] https://lkml.org/lkml/2014/8/25/258

> Signed-off-by: Feng Wu <feng...@intel.com>
> ---
>  Documentation/virtual/kvm/devices/vfio.txt |    8 ++++++++
>  include/uapi/linux/kvm.h                   |   14 ++++++++++++++
>  2 files changed, 22 insertions(+), 0 deletions(-)
> 
> diff --git a/Documentation/virtual/kvm/devices/vfio.txt 
> b/Documentation/virtual/kvm/devices/vfio.txt
> index ef51740..bd99176 100644
> --- a/Documentation/virtual/kvm/devices/vfio.txt
> +++ b/Documentation/virtual/kvm/devices/vfio.txt
> @@ -13,6 +13,7 @@ VFIO-group is held by KVM.
>  
>  Groups:
>    KVM_DEV_VFIO_GROUP
> +  KVM_DEV_VFIO_INTERRUPT
>  
>  KVM_DEV_VFIO_GROUP attributes:
>    KVM_DEV_VFIO_GROUP_ADD: Add a VFIO group to VFIO-KVM device tracking
> @@ -20,3 +21,10 @@ KVM_DEV_VFIO_GROUP attributes:
>  
>  For each, kvm_device_attr.addr points to an int32_t file descriptor
>  for the VFIO group.
> +
> +KVM_DEV_VFIO_INTERRUPT attributes:
> +  KVM_DEV_VFIO_INTERRUPT_POSTING_IRQ: Set up the interrupt configuration for
> +VT-d Posted-Interrrupts
> +
> +For each, kvm_device_attr.addr points to struct kvm_posted_intr, which
> +include the needed information for VT-d Posted-Interrupts setup.
> diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
> index 6076882..5544fcc 100644
> --- a/include/uapi/linux/kvm.h
> +++ b/include/uapi/linux/kvm.h
> @@ -943,9 +943,23 @@ struct kvm_device_attr {
>       __u64   addr;           /* userspace address of attr data */
>  };
>  
> +struct virq_info {
> +     __u32   index;          /* index of the msi/msix entry */
> +     int     virq;           /* virq of the interrupt */
> +};
> +
> +struct kvm_posted_intr {
> +     __u32   fd;             /* file descriptor of the VFIO device */
> +     __u32   count;
> +     bool    msix;

Note that MSI-X (as opposed to MSI) is a PCI concept.  Being a VFIO
interface this should operate at VFIO IRQ index and sub-index.

> +     struct virq_info virq_info[0];
> +};
> +
>  #define  KVM_DEV_VFIO_GROUP                  1
>  #define   KVM_DEV_VFIO_GROUP_ADD                     1
>  #define   KVM_DEV_VFIO_GROUP_DEL                     2
> +#define  KVM_DEV_VFIO_INTERRUPT                      2
> +#define   KVM_DEV_VFIO_INTERRUPT_POSTING_IRQ         1
>  
>  enum kvm_device_type {
>       KVM_DEV_TYPE_FSL_MPIC_20        = 1,



--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to