Re: [RFC PATCH v1 1/2] vfio: Add new interrupt group for VFIO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.wu@xxxxxxxxx>
> ---
>  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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux