Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0cb5f71 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'vfio-v3.15-rc1' of git://github.com/awilliam/linux-vfio

Pull VFIO updates from Alex Williamson:
 "VFIO updates for v3.15 include:

   - Allow the vfio-type1 IOMMU to support multiple domains within a
     container
   - Plumb path to query whether all domains are cache-coherent
   - Wire query into kvm-vfio device to avoid KVM x86 WBINVD emulation
   - Always select CONFIG_ANON_INODES, vfio depends on it (Arnd)

  The first patch also makes the vfio-type1 IOMMU driver completely
  independent of the bus_type of the devices it's handling, which
  enables it to be used for both vfio-pci and a future vfio-platform
  (and hopefully combinations involving both simultaneously)"

* tag 'vfio-v3.15-rc1' of git://github.com/awilliam/linux-vfio:
  vfio: always select ANON_INODES
  kvm/vfio: Support for DMA coherent IOMMUs
  vfio: Add external user check extension interface
  vfio/type1: Add extension to test DMA cache coherence of IOMMU
  vfio/iommu_type1: Multi-IOMMU domain support
parents a372c967 4379d2ae
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -13,6 +13,7 @@ menuconfig VFIO
	depends on IOMMU_API
	depends on IOMMU_API
	select VFIO_IOMMU_TYPE1 if X86
	select VFIO_IOMMU_TYPE1 if X86
	select VFIO_IOMMU_SPAPR_TCE if (PPC_POWERNV || PPC_PSERIES)
	select VFIO_IOMMU_SPAPR_TCE if (PPC_POWERNV || PPC_PSERIES)
	select ANON_INODES
	help
	help
	  VFIO provides a framework for secure userspace device drivers.
	  VFIO provides a framework for secure userspace device drivers.
	  See Documentation/vfio.txt for more details.
	  See Documentation/vfio.txt for more details.
+6 −0
Original line number Original line Diff line number Diff line
@@ -1413,6 +1413,12 @@ int vfio_external_user_iommu_id(struct vfio_group *group)
}
}
EXPORT_SYMBOL_GPL(vfio_external_user_iommu_id);
EXPORT_SYMBOL_GPL(vfio_external_user_iommu_id);


long vfio_external_check_extension(struct vfio_group *group, unsigned long arg)
{
	return vfio_ioctl_check_extension(group->container, arg);
}
EXPORT_SYMBOL_GPL(vfio_external_check_extension);

/**
/**
 * Module/class support
 * Module/class support
 */
 */
+355 −301

File changed.

Preview size limit exceeded, changes collapsed.

+2 −0
Original line number Original line Diff line number Diff line
@@ -96,5 +96,7 @@ extern void vfio_unregister_iommu_driver(
extern struct vfio_group *vfio_group_get_external_user(struct file *filep);
extern struct vfio_group *vfio_group_get_external_user(struct file *filep);
extern void vfio_group_put_external_user(struct vfio_group *group);
extern void vfio_group_put_external_user(struct vfio_group *group);
extern int vfio_external_user_iommu_id(struct vfio_group *group);
extern int vfio_external_user_iommu_id(struct vfio_group *group);
extern long vfio_external_check_extension(struct vfio_group *group,
					  unsigned long arg);


#endif /* VFIO_H */
#endif /* VFIO_H */
+6 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,12 @@


#define VFIO_TYPE1_IOMMU		1
#define VFIO_TYPE1_IOMMU		1
#define VFIO_SPAPR_TCE_IOMMU		2
#define VFIO_SPAPR_TCE_IOMMU		2
#define VFIO_TYPE1v2_IOMMU		3
/*
 * IOMMU enforces DMA cache coherence (ex. PCIe NoSnoop stripping).  This
 * capability is subject to change as groups are added or removed.
 */
#define VFIO_DMA_CC_IOMMU		4


/*
/*
 * The IOCTL interface is designed for extensibility by embedding the
 * The IOCTL interface is designed for extensibility by embedding the
Loading