All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Alexander Gordeev <agordeev@linux.ibm.com>,
	David Airlie <airlied@gmail.com>,
	Tony Krowiak <akrowiak@linux.ibm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Diana Craciun <diana.craciun@oss.nxp.com>,
	dri-devel@lists.freedesktop.org,
	Eric Auger <eric.auger@redhat.com>,
	Eric Farman <farman@linux.ibm.com>,
	Harald Freudenberger <freude@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	intel-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org, iommu@lists.linux.dev,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Jason Herne <jjherne@linux.ibm.com>,
	Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
	Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
	kvm@vger.kernel.org, linux-s390@vger.kernel.org,
	Longfang Liu <liulongfang@huawei.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>,
	Peter Oberparleiter <oberpar@linux.ibm.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	Vineeth Vijayan <vneethv@linux.ibm.com>,
	Will Deacon <will@kernel.org>, Yishai Hadas <yishaih@nvidia.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	Zhi Wang <zhi.a.wang@intel.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>,
	Nicolin Chen <nicolinc@nvidia.com>, Yi Liu <yi.l.liu@intel.com>
Subject: [PATCH 09/10] vfio: Make vfio_container optionally compiled
Date: Tue, 25 Oct 2022 15:50:44 -0300	[thread overview]
Message-ID: <9-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com> (raw)
In-Reply-To: <0-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com>

Add a kconfig CONFIG_VFIO_CONTAINER that controls compiling the container
code. If 'n' then only iommufd will provide the container service. All the
support for vfio iommu drivers, including type1, will not be built.

This allows a compilation check that no inappropriate dependencies between
the device/group and container have been created.

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
 drivers/vfio/Kconfig  | 37 ++++++++++++++++--------
 drivers/vfio/Makefile |  4 +--
 drivers/vfio/vfio.h   | 65 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 92 insertions(+), 14 deletions(-)

diff --git a/drivers/vfio/Kconfig b/drivers/vfio/Kconfig
index 1118d322eec97d..d384419d151dda 100644
--- a/drivers/vfio/Kconfig
+++ b/drivers/vfio/Kconfig
@@ -3,8 +3,8 @@ menuconfig VFIO
 	tristate "VFIO Non-Privileged userspace driver framework"
 	select IOMMU_API
 	depends on IOMMUFD || !IOMMUFD
-	select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64)
 	select INTERVAL_TREE
+	select VFIO_CONTAINER if IOMMUFD=n
 	help
 	  VFIO provides a framework for secure userspace device drivers.
 	  See Documentation/driver-api/vfio.rst for more details.
@@ -12,25 +12,27 @@ menuconfig VFIO
 	  If you don't know what to do here, say N.
 
 if VFIO
+config VFIO_CONTAINER
+	bool "Support for the VFIO container /dev/vfio/vfio"
+	select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64)
+	default y
+	help
+	  The VFIO container is the classic interface to VFIO for establishing
+	  mappings. If N is selected here then IOMMUFD must be used the manage
+	  the mappings.
+
+	  Unless testing IOMMUFD say Y here.
+
+if VFIO_CONTAINER
 config VFIO_IOMMU_TYPE1
 	tristate
-	default n
+	default MMU && (X86 || S390 || ARM || ARM64)
 
 config VFIO_IOMMU_SPAPR_TCE
 	tristate
 	depends on SPAPR_TCE_IOMMU
 	default VFIO
 
-config VFIO_SPAPR_EEH
-	tristate
-	depends on EEH && VFIO_IOMMU_SPAPR_TCE
-	default VFIO
-
-config VFIO_VIRQFD
-	tristate
-	select EVENTFD
-	default n
-
 config VFIO_NOIOMMU
 	bool "VFIO No-IOMMU support"
 	help
@@ -44,6 +46,17 @@ config VFIO_NOIOMMU
 	  this mode since there is no IOMMU to provide DMA translation.
 
 	  If you don't know what to do here, say N.
+endif
+
+config VFIO_SPAPR_EEH
+	tristate
+	depends on EEH && VFIO_IOMMU_SPAPR_TCE
+	default VFIO
+
+config VFIO_VIRQFD
+	tristate
+	select EVENTFD
+	default n
 
 source "drivers/vfio/pci/Kconfig"
 source "drivers/vfio/platform/Kconfig"
diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile
index 3863922529ef20..b953517dc70f99 100644
--- a/drivers/vfio/Makefile
+++ b/drivers/vfio/Makefile
@@ -4,9 +4,9 @@ vfio_virqfd-y := virqfd.o
 obj-$(CONFIG_VFIO) += vfio.o
 
 vfio-y += vfio_main.o \
-	  iova_bitmap.o \
-	  container.o
+	  iova_bitmap.o
 vfio-$(CONFIG_IOMMUFD) += iommufd.o
+vfio-$(CONFIG_VFIO_CONTAINER) += container.o
 
 obj-$(CONFIG_VFIO_VIRQFD) += vfio_virqfd.o
 obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o
diff --git a/drivers/vfio/vfio.h b/drivers/vfio/vfio.h
index d57a08afb5cf5c..3378714a746274 100644
--- a/drivers/vfio/vfio.h
+++ b/drivers/vfio/vfio.h
@@ -55,7 +55,9 @@ struct vfio_group {
 	struct list_head		device_list;
 	struct mutex			device_lock;
 	struct list_head		vfio_next;
+#if IS_ENABLED(CONFIG_VFIO_CONTAINER)
 	struct list_head		container_next;
+#endif
 	enum vfio_group_type		type;
 	struct mutex			group_lock;
 	struct kvm			*kvm;
@@ -64,6 +66,7 @@ struct vfio_group {
 	struct iommufd_ctx		*iommufd;
 };
 
+#if IS_ENABLED(CONFIG_VFIO_CONTAINER)
 /* events for the backend driver notify callback */
 enum vfio_iommu_notify_type {
 	VFIO_IOMMU_CONTAINER_CLOSE = 0,
@@ -129,6 +132,68 @@ int vfio_container_dma_rw(struct vfio_container *container, dma_addr_t iova,
 
 int __init vfio_container_init(void);
 void vfio_container_cleanup(void);
+#else
+static inline struct vfio_container *
+vfio_container_from_file(struct file *filep)
+{
+	return NULL;
+}
+
+static inline int vfio_group_use_container(struct vfio_group *group)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_group_unuse_container(struct vfio_group *group)
+{
+}
+
+static inline int vfio_container_attach_group(struct vfio_container *container,
+					      struct vfio_group *group)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_group_detach_container(struct vfio_group *group)
+{
+}
+
+static inline void vfio_device_container_register(struct vfio_device *device)
+{
+}
+
+static inline void vfio_device_container_unregister(struct vfio_device *device)
+{
+}
+
+static inline int vfio_container_pin_pages(struct vfio_container *container,
+					   struct iommu_group *iommu_group,
+					   dma_addr_t iova, int npage, int prot,
+					   struct page **pages)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_container_unpin_pages(struct vfio_container *container,
+					      dma_addr_t iova, int npage)
+{
+}
+
+static inline int vfio_container_dma_rw(struct vfio_container *container,
+					dma_addr_t iova, void *data, size_t len,
+					bool write)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int vfio_container_init(void)
+{
+	return 0;
+}
+static inline void vfio_container_cleanup(void)
+{
+}
+#endif
 
 #if IS_ENABLED(CONFIG_IOMMUFD)
 int vfio_iommufd_bind(struct vfio_device *device, struct iommufd_ctx *ictx);
-- 
2.38.0


WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Alexander Gordeev <agordeev@linux.ibm.com>,
	David Airlie <airlied@gmail.com>,
	Tony Krowiak <akrowiak@linux.ibm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Diana Craciun <diana.craciun@oss.nxp.com>,
	dri-devel@lists.freedesktop.org,
	Eric Auger <eric.auger@redhat.com>,
	Eric Farman <farman@linux.ibm.com>,
	Harald Freudenberger <freude@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	intel-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org, iommu@lists.linux.dev,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Jason Herne <jjherne@linux.ibm.com>,
	Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
	Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
	kvm@vger.kernel.org, linux-s390@vger.kernel.org,
	Longfang Liu <liulongfang@huawei.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>,
	Peter Oberparleiter <oberpar@linux.ibm.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	Vineeth Vijayan <vneethv@linux.ibm.com>,
	Will Deacon <will@kernel.org>, Yishai Hadas <yishaih@nvidia.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	Zhi Wang <zhi.a.wang@intel.com>
Cc: Yi Liu <yi.l.liu@intel.com>, Nicolin Chen <nicolinc@nvidia.com>,
	Lu Baolu <baolu.lu@linux.intel.com>
Subject: [PATCH 09/10] vfio: Make vfio_container optionally compiled
Date: Tue, 25 Oct 2022 15:50:44 -0300	[thread overview]
Message-ID: <9-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com> (raw)
In-Reply-To: <0-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com>

Add a kconfig CONFIG_VFIO_CONTAINER that controls compiling the container
code. If 'n' then only iommufd will provide the container service. All the
support for vfio iommu drivers, including type1, will not be built.

This allows a compilation check that no inappropriate dependencies between
the device/group and container have been created.

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
 drivers/vfio/Kconfig  | 37 ++++++++++++++++--------
 drivers/vfio/Makefile |  4 +--
 drivers/vfio/vfio.h   | 65 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 92 insertions(+), 14 deletions(-)

diff --git a/drivers/vfio/Kconfig b/drivers/vfio/Kconfig
index 1118d322eec97d..d384419d151dda 100644
--- a/drivers/vfio/Kconfig
+++ b/drivers/vfio/Kconfig
@@ -3,8 +3,8 @@ menuconfig VFIO
 	tristate "VFIO Non-Privileged userspace driver framework"
 	select IOMMU_API
 	depends on IOMMUFD || !IOMMUFD
-	select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64)
 	select INTERVAL_TREE
+	select VFIO_CONTAINER if IOMMUFD=n
 	help
 	  VFIO provides a framework for secure userspace device drivers.
 	  See Documentation/driver-api/vfio.rst for more details.
@@ -12,25 +12,27 @@ menuconfig VFIO
 	  If you don't know what to do here, say N.
 
 if VFIO
+config VFIO_CONTAINER
+	bool "Support for the VFIO container /dev/vfio/vfio"
+	select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64)
+	default y
+	help
+	  The VFIO container is the classic interface to VFIO for establishing
+	  mappings. If N is selected here then IOMMUFD must be used the manage
+	  the mappings.
+
+	  Unless testing IOMMUFD say Y here.
+
+if VFIO_CONTAINER
 config VFIO_IOMMU_TYPE1
 	tristate
-	default n
+	default MMU && (X86 || S390 || ARM || ARM64)
 
 config VFIO_IOMMU_SPAPR_TCE
 	tristate
 	depends on SPAPR_TCE_IOMMU
 	default VFIO
 
-config VFIO_SPAPR_EEH
-	tristate
-	depends on EEH && VFIO_IOMMU_SPAPR_TCE
-	default VFIO
-
-config VFIO_VIRQFD
-	tristate
-	select EVENTFD
-	default n
-
 config VFIO_NOIOMMU
 	bool "VFIO No-IOMMU support"
 	help
@@ -44,6 +46,17 @@ config VFIO_NOIOMMU
 	  this mode since there is no IOMMU to provide DMA translation.
 
 	  If you don't know what to do here, say N.
+endif
+
+config VFIO_SPAPR_EEH
+	tristate
+	depends on EEH && VFIO_IOMMU_SPAPR_TCE
+	default VFIO
+
+config VFIO_VIRQFD
+	tristate
+	select EVENTFD
+	default n
 
 source "drivers/vfio/pci/Kconfig"
 source "drivers/vfio/platform/Kconfig"
diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile
index 3863922529ef20..b953517dc70f99 100644
--- a/drivers/vfio/Makefile
+++ b/drivers/vfio/Makefile
@@ -4,9 +4,9 @@ vfio_virqfd-y := virqfd.o
 obj-$(CONFIG_VFIO) += vfio.o
 
 vfio-y += vfio_main.o \
-	  iova_bitmap.o \
-	  container.o
+	  iova_bitmap.o
 vfio-$(CONFIG_IOMMUFD) += iommufd.o
+vfio-$(CONFIG_VFIO_CONTAINER) += container.o
 
 obj-$(CONFIG_VFIO_VIRQFD) += vfio_virqfd.o
 obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o
diff --git a/drivers/vfio/vfio.h b/drivers/vfio/vfio.h
index d57a08afb5cf5c..3378714a746274 100644
--- a/drivers/vfio/vfio.h
+++ b/drivers/vfio/vfio.h
@@ -55,7 +55,9 @@ struct vfio_group {
 	struct list_head		device_list;
 	struct mutex			device_lock;
 	struct list_head		vfio_next;
+#if IS_ENABLED(CONFIG_VFIO_CONTAINER)
 	struct list_head		container_next;
+#endif
 	enum vfio_group_type		type;
 	struct mutex			group_lock;
 	struct kvm			*kvm;
@@ -64,6 +66,7 @@ struct vfio_group {
 	struct iommufd_ctx		*iommufd;
 };
 
+#if IS_ENABLED(CONFIG_VFIO_CONTAINER)
 /* events for the backend driver notify callback */
 enum vfio_iommu_notify_type {
 	VFIO_IOMMU_CONTAINER_CLOSE = 0,
@@ -129,6 +132,68 @@ int vfio_container_dma_rw(struct vfio_container *container, dma_addr_t iova,
 
 int __init vfio_container_init(void);
 void vfio_container_cleanup(void);
+#else
+static inline struct vfio_container *
+vfio_container_from_file(struct file *filep)
+{
+	return NULL;
+}
+
+static inline int vfio_group_use_container(struct vfio_group *group)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_group_unuse_container(struct vfio_group *group)
+{
+}
+
+static inline int vfio_container_attach_group(struct vfio_container *container,
+					      struct vfio_group *group)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_group_detach_container(struct vfio_group *group)
+{
+}
+
+static inline void vfio_device_container_register(struct vfio_device *device)
+{
+}
+
+static inline void vfio_device_container_unregister(struct vfio_device *device)
+{
+}
+
+static inline int vfio_container_pin_pages(struct vfio_container *container,
+					   struct iommu_group *iommu_group,
+					   dma_addr_t iova, int npage, int prot,
+					   struct page **pages)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_container_unpin_pages(struct vfio_container *container,
+					      dma_addr_t iova, int npage)
+{
+}
+
+static inline int vfio_container_dma_rw(struct vfio_container *container,
+					dma_addr_t iova, void *data, size_t len,
+					bool write)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int vfio_container_init(void)
+{
+	return 0;
+}
+static inline void vfio_container_cleanup(void)
+{
+}
+#endif
 
 #if IS_ENABLED(CONFIG_IOMMUFD)
 int vfio_iommufd_bind(struct vfio_device *device, struct iommufd_ctx *ictx);
-- 
2.38.0


WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Alexander Gordeev <agordeev@linux.ibm.com>,
	David Airlie <airlied@gmail.com>,
	Tony Krowiak <akrowiak@linux.ibm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Diana Craciun <diana.craciun@oss.nxp.com>,
	dri-devel@lists.freedesktop.org,
	Eric Auger <eric.auger@redhat.com>,
	Eric Farman <farman@linux.ibm.com>,
	Harald Freudenberger <freude@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	intel-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org, iommu@lists.linux.dev,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Jason Herne <jjherne@linux.ibm.com>,
	Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
	Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
	kvm@vger.kernel.org, linux-s390@vger.kernel.org,
	Longfang Liu <liulongfang@huawei.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>,
	Peter Oberparleiter <oberpar@linux.ibm.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	Vineeth Vijayan <vneethv@linux.ibm.com>,
	Will Deacon <will@kernel.org>, Yishai Hadas <yishaih@nvidia.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	Zhi Wang <zhi.a.wang@intel.com>
Cc: Yi Liu <yi.l.liu@intel.com>, Nicolin Chen <nicolinc@nvidia.com>,
	Lu Baolu <baolu.lu@linux.intel.com>
Subject: [Intel-gfx] [PATCH 09/10] vfio: Make vfio_container optionally compiled
Date: Tue, 25 Oct 2022 15:50:44 -0300	[thread overview]
Message-ID: <9-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com> (raw)
In-Reply-To: <0-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com>

Add a kconfig CONFIG_VFIO_CONTAINER that controls compiling the container
code. If 'n' then only iommufd will provide the container service. All the
support for vfio iommu drivers, including type1, will not be built.

This allows a compilation check that no inappropriate dependencies between
the device/group and container have been created.

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
 drivers/vfio/Kconfig  | 37 ++++++++++++++++--------
 drivers/vfio/Makefile |  4 +--
 drivers/vfio/vfio.h   | 65 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 92 insertions(+), 14 deletions(-)

diff --git a/drivers/vfio/Kconfig b/drivers/vfio/Kconfig
index 1118d322eec97d..d384419d151dda 100644
--- a/drivers/vfio/Kconfig
+++ b/drivers/vfio/Kconfig
@@ -3,8 +3,8 @@ menuconfig VFIO
 	tristate "VFIO Non-Privileged userspace driver framework"
 	select IOMMU_API
 	depends on IOMMUFD || !IOMMUFD
-	select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64)
 	select INTERVAL_TREE
+	select VFIO_CONTAINER if IOMMUFD=n
 	help
 	  VFIO provides a framework for secure userspace device drivers.
 	  See Documentation/driver-api/vfio.rst for more details.
@@ -12,25 +12,27 @@ menuconfig VFIO
 	  If you don't know what to do here, say N.
 
 if VFIO
+config VFIO_CONTAINER
+	bool "Support for the VFIO container /dev/vfio/vfio"
+	select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64)
+	default y
+	help
+	  The VFIO container is the classic interface to VFIO for establishing
+	  mappings. If N is selected here then IOMMUFD must be used the manage
+	  the mappings.
+
+	  Unless testing IOMMUFD say Y here.
+
+if VFIO_CONTAINER
 config VFIO_IOMMU_TYPE1
 	tristate
-	default n
+	default MMU && (X86 || S390 || ARM || ARM64)
 
 config VFIO_IOMMU_SPAPR_TCE
 	tristate
 	depends on SPAPR_TCE_IOMMU
 	default VFIO
 
-config VFIO_SPAPR_EEH
-	tristate
-	depends on EEH && VFIO_IOMMU_SPAPR_TCE
-	default VFIO
-
-config VFIO_VIRQFD
-	tristate
-	select EVENTFD
-	default n
-
 config VFIO_NOIOMMU
 	bool "VFIO No-IOMMU support"
 	help
@@ -44,6 +46,17 @@ config VFIO_NOIOMMU
 	  this mode since there is no IOMMU to provide DMA translation.
 
 	  If you don't know what to do here, say N.
+endif
+
+config VFIO_SPAPR_EEH
+	tristate
+	depends on EEH && VFIO_IOMMU_SPAPR_TCE
+	default VFIO
+
+config VFIO_VIRQFD
+	tristate
+	select EVENTFD
+	default n
 
 source "drivers/vfio/pci/Kconfig"
 source "drivers/vfio/platform/Kconfig"
diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile
index 3863922529ef20..b953517dc70f99 100644
--- a/drivers/vfio/Makefile
+++ b/drivers/vfio/Makefile
@@ -4,9 +4,9 @@ vfio_virqfd-y := virqfd.o
 obj-$(CONFIG_VFIO) += vfio.o
 
 vfio-y += vfio_main.o \
-	  iova_bitmap.o \
-	  container.o
+	  iova_bitmap.o
 vfio-$(CONFIG_IOMMUFD) += iommufd.o
+vfio-$(CONFIG_VFIO_CONTAINER) += container.o
 
 obj-$(CONFIG_VFIO_VIRQFD) += vfio_virqfd.o
 obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o
diff --git a/drivers/vfio/vfio.h b/drivers/vfio/vfio.h
index d57a08afb5cf5c..3378714a746274 100644
--- a/drivers/vfio/vfio.h
+++ b/drivers/vfio/vfio.h
@@ -55,7 +55,9 @@ struct vfio_group {
 	struct list_head		device_list;
 	struct mutex			device_lock;
 	struct list_head		vfio_next;
+#if IS_ENABLED(CONFIG_VFIO_CONTAINER)
 	struct list_head		container_next;
+#endif
 	enum vfio_group_type		type;
 	struct mutex			group_lock;
 	struct kvm			*kvm;
@@ -64,6 +66,7 @@ struct vfio_group {
 	struct iommufd_ctx		*iommufd;
 };
 
+#if IS_ENABLED(CONFIG_VFIO_CONTAINER)
 /* events for the backend driver notify callback */
 enum vfio_iommu_notify_type {
 	VFIO_IOMMU_CONTAINER_CLOSE = 0,
@@ -129,6 +132,68 @@ int vfio_container_dma_rw(struct vfio_container *container, dma_addr_t iova,
 
 int __init vfio_container_init(void);
 void vfio_container_cleanup(void);
+#else
+static inline struct vfio_container *
+vfio_container_from_file(struct file *filep)
+{
+	return NULL;
+}
+
+static inline int vfio_group_use_container(struct vfio_group *group)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_group_unuse_container(struct vfio_group *group)
+{
+}
+
+static inline int vfio_container_attach_group(struct vfio_container *container,
+					      struct vfio_group *group)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_group_detach_container(struct vfio_group *group)
+{
+}
+
+static inline void vfio_device_container_register(struct vfio_device *device)
+{
+}
+
+static inline void vfio_device_container_unregister(struct vfio_device *device)
+{
+}
+
+static inline int vfio_container_pin_pages(struct vfio_container *container,
+					   struct iommu_group *iommu_group,
+					   dma_addr_t iova, int npage, int prot,
+					   struct page **pages)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline void vfio_container_unpin_pages(struct vfio_container *container,
+					      dma_addr_t iova, int npage)
+{
+}
+
+static inline int vfio_container_dma_rw(struct vfio_container *container,
+					dma_addr_t iova, void *data, size_t len,
+					bool write)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int vfio_container_init(void)
+{
+	return 0;
+}
+static inline void vfio_container_cleanup(void)
+{
+}
+#endif
 
 #if IS_ENABLED(CONFIG_IOMMUFD)
 int vfio_iommufd_bind(struct vfio_device *device, struct iommufd_ctx *ictx);
-- 
2.38.0


  parent reply	other threads:[~2022-10-25 18:50 UTC|newest]

Thread overview: 206+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-25 18:17 [PATCH 00/10] Connect VFIO to IOMMUFD Jason Gunthorpe
2022-10-25 18:17 ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17 ` Jason Gunthorpe
2022-10-25 18:17 ` [PATCH 01/10] vfio: Move vfio_device driver open/close code to a function Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-11-01  7:33   ` Tian, Kevin
2022-11-01  7:33     ` [Intel-gfx] " Tian, Kevin
2022-11-01  7:33     ` Tian, Kevin
2022-11-01 12:12     ` Jason Gunthorpe
2022-11-01 12:12       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:12       ` Jason Gunthorpe
2022-11-01 14:36   ` Yi Liu
2022-11-01 14:36     ` [Intel-gfx] " Yi Liu
2022-11-01 14:36     ` Yi Liu
2022-10-25 18:17 ` [PATCH 02/10] vfio: Move vfio_device_assign_container() into vfio_device_first_open() Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-11-01  7:38   ` Tian, Kevin
2022-11-01  7:38     ` [Intel-gfx] " Tian, Kevin
2022-11-01  7:38     ` Tian, Kevin
2022-11-01 12:14     ` Jason Gunthorpe
2022-11-01 12:14       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:14       ` Jason Gunthorpe
2022-11-01 14:37   ` Yi Liu
2022-11-01 14:37     ` Yi Liu
2022-11-01 14:37     ` [Intel-gfx] " Yi Liu
2022-11-01 17:37     ` Jason Gunthorpe
2022-11-01 17:37       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 17:37       ` Jason Gunthorpe
2022-10-25 18:17 ` [PATCH 03/10] vfio: Rename vfio_device_assign/unassign_container() Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-11-01  7:39   ` Tian, Kevin
2022-11-01  7:39     ` [Intel-gfx] " Tian, Kevin
2022-11-01  7:39     ` Tian, Kevin
2022-11-01 14:39   ` Yi Liu
2022-11-01 14:39     ` [Intel-gfx] " Yi Liu
2022-11-01 14:39     ` Yi Liu
2022-10-25 18:17 ` [PATCH 04/10] vfio: Move storage of allow_unsafe_interrupts to vfio_main.c Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-10-26 21:24   ` Alex Williamson
2022-10-26 21:24     ` [Intel-gfx] " Alex Williamson
2022-10-26 21:24     ` Alex Williamson
2022-10-28 18:40     ` Jason Gunthorpe
2022-10-28 18:40       ` [Intel-gfx] " Jason Gunthorpe
2022-10-28 18:40       ` Jason Gunthorpe
2022-10-31 22:45       ` [Intel-gfx] " Alex Williamson
2022-10-31 22:45         ` Alex Williamson
2022-10-31 22:45         ` Alex Williamson
2022-11-07 13:19         ` Jason Gunthorpe
2022-11-07 13:19           ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 13:19           ` Jason Gunthorpe
2022-11-07 15:18           ` Alex Williamson
2022-11-07 15:18             ` Alex Williamson
2022-11-07 15:18             ` [Intel-gfx] " Alex Williamson
2022-11-07 15:32             ` Jason Gunthorpe
2022-11-07 15:32               ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 15:32               ` Jason Gunthorpe
2022-11-07 18:05               ` Alex Williamson
2022-11-07 18:05                 ` Alex Williamson
2022-11-07 18:05                 ` [Intel-gfx] " Alex Williamson
2022-11-07 18:45                 ` Jason Gunthorpe
2022-11-07 18:45                   ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 18:45                   ` Jason Gunthorpe
2022-11-08 22:55                   ` Alex Williamson
2022-11-08 22:55                     ` [Intel-gfx] " Alex Williamson
2022-11-08 22:55                     ` Alex Williamson
2022-11-09  1:05                     ` Jason Gunthorpe
2022-11-09  1:05                       ` [Intel-gfx] " Jason Gunthorpe
2022-11-09  1:05                       ` Jason Gunthorpe
2022-11-09  3:21                       ` Tian, Kevin
2022-11-09  3:21                         ` [Intel-gfx] " Tian, Kevin
2022-11-09  3:21                         ` Tian, Kevin
2022-11-09 13:11                         ` Jason Gunthorpe
2022-11-09 13:11                           ` [Intel-gfx] " Jason Gunthorpe
2022-11-09 13:11                           ` Jason Gunthorpe
2022-11-10  2:44                           ` Tian, Kevin
2022-11-10  2:44                             ` [Intel-gfx] " Tian, Kevin
2022-11-10  2:44                             ` Tian, Kevin
2022-11-09 18:28                       ` Alex Williamson
2022-11-09 18:28                         ` [Intel-gfx] " Alex Williamson
2022-11-09 18:28                         ` Alex Williamson
2022-11-10 19:19                         ` Jason Gunthorpe
2022-11-10 19:19                           ` [Intel-gfx] " Jason Gunthorpe
2022-11-10 19:19                           ` Jason Gunthorpe
2022-10-25 18:17 ` [PATCH 05/10] vfio: Use IOMMU_CAP_ENFORCE_CACHE_COHERENCY for vfio_file_enforced_coherent() Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-11-01  7:52   ` Tian, Kevin
2022-11-01  7:52     ` [Intel-gfx] " Tian, Kevin
2022-11-01  7:52     ` Tian, Kevin
2022-11-01 12:26     ` Jason Gunthorpe
2022-11-01 12:26       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:26       ` Jason Gunthorpe
2022-11-03  4:38       ` Tian, Kevin
2022-11-03  4:38         ` [Intel-gfx] " Tian, Kevin
2022-11-03  4:38         ` Tian, Kevin
2022-11-04 19:45         ` Jason Gunthorpe
2022-11-04 19:45           ` [Intel-gfx] " Jason Gunthorpe
2022-11-04 19:45           ` Jason Gunthorpe
2022-10-25 18:50 ` [PATCH 06/10] vfio-iommufd: Allow iommufd to be used in place of a container fd Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-11-01  8:09   ` Tian, Kevin
2022-11-01  8:09     ` [Intel-gfx] " Tian, Kevin
2022-11-01  8:09     ` Tian, Kevin
2022-11-01  9:19     ` Nicolin Chen
2022-11-01  9:19       ` [Intel-gfx] " Nicolin Chen
2022-11-01  9:19       ` Nicolin Chen
2022-11-01 11:51       ` Jason Gunthorpe
2022-11-01 11:51         ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 11:51         ` Jason Gunthorpe
2022-11-03  4:39         ` Tian, Kevin
2022-11-03  4:39           ` [Intel-gfx] " Tian, Kevin
2022-11-03  4:39           ` Tian, Kevin
2022-11-01 12:40     ` Jason Gunthorpe
2022-11-01 12:40       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:40       ` Jason Gunthorpe
2022-11-02  7:28   ` Yi Liu
2022-11-02  7:28     ` [Intel-gfx] " Yi Liu
2022-11-02  7:28     ` Yi Liu
2022-11-07 23:45     ` Jason Gunthorpe
2022-11-07 23:45       ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 23:45       ` Jason Gunthorpe
2022-10-25 18:50 ` [PATCH 07/10] vfio-iommufd: Support iommufd for physical VFIO devices Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-11-01  8:21   ` Tian, Kevin
2022-11-01  8:21     ` [Intel-gfx] " Tian, Kevin
2022-11-01  8:21     ` Tian, Kevin
2022-11-04 19:51     ` Jason Gunthorpe
2022-11-04 19:51       ` [Intel-gfx] " Jason Gunthorpe
2022-11-04 19:51       ` Jason Gunthorpe
2022-10-25 18:50 ` [PATCH 08/10] vfio-iommufd: Support iommufd for emulated " Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-11-01  8:37   ` Tian, Kevin
2022-11-01  8:37     ` [Intel-gfx] " Tian, Kevin
2022-11-01  8:37     ` Tian, Kevin
2022-11-01 12:49     ` Jason Gunthorpe
2022-11-01 12:49       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:49       ` Jason Gunthorpe
2022-11-03  4:52       ` Tian, Kevin
2022-11-03  4:52         ` [Intel-gfx] " Tian, Kevin
2022-11-03  4:52         ` Tian, Kevin
2022-10-25 18:50 ` Jason Gunthorpe [this message]
2022-10-25 18:50   ` [Intel-gfx] [PATCH 09/10] vfio: Make vfio_container optionally compiled Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-11-01  8:41   ` Tian, Kevin
2022-11-01  8:41     ` [Intel-gfx] " Tian, Kevin
2022-11-01  8:41     ` Tian, Kevin
2022-11-01 12:56     ` Jason Gunthorpe
2022-11-01 12:56       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:56       ` Jason Gunthorpe
2022-10-25 18:50 ` [PATCH 10/10] iommufd: Allow iommufd to supply /dev/vfio/vfio Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-10-26 21:31   ` Alex Williamson
2022-10-26 21:31     ` Alex Williamson
2022-10-26 21:31     ` [Intel-gfx] " Alex Williamson
2022-10-28 18:44     ` Jason Gunthorpe
2022-10-28 18:44       ` [Intel-gfx] " Jason Gunthorpe
2022-10-28 18:44       ` Jason Gunthorpe
2022-10-31 22:53       ` Alex Williamson
2022-10-31 22:53         ` [Intel-gfx] " Alex Williamson
2022-10-31 22:53         ` Alex Williamson
2022-11-07 13:57         ` Jason Gunthorpe
2022-11-07 13:57           ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 13:57           ` Jason Gunthorpe
2022-10-25 20:42 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Connect VFIO to IOMMUFD Patchwork
2022-10-28 23:53 ` [PATCH 00/10] " Nicolin Chen
2022-10-28 23:53   ` [Intel-gfx] " Nicolin Chen
2022-10-28 23:53   ` Nicolin Chen
2022-10-28 23:54   ` Nicolin Chen
2022-10-28 23:54     ` [Intel-gfx] " Nicolin Chen
2022-10-28 23:54     ` Nicolin Chen
2022-10-31 10:38 ` Yi Liu
2022-10-31 10:38   ` [Intel-gfx] " Yi Liu
2022-10-31 10:38   ` Yi Liu
2022-10-31 12:18   ` [Intel-gfx] " Jason Gunthorpe
2022-10-31 12:18     ` Jason Gunthorpe
2022-10-31 12:18     ` Jason Gunthorpe
2022-10-31 12:25     ` Yi Liu
2022-10-31 12:25       ` [Intel-gfx] " Yi Liu
2022-10-31 12:25       ` Yi Liu
2022-10-31 23:24       ` Jason Gunthorpe
2022-10-31 23:24         ` [Intel-gfx] " Jason Gunthorpe
2022-10-31 23:24         ` Jason Gunthorpe
2022-11-01  3:04         ` Yi Liu
2022-11-01  3:04           ` Yi Liu
2022-11-01  3:04           ` [Intel-gfx] " Yi Liu
2022-11-01  4:21           ` Nicolin Chen
2022-11-01  4:21             ` [Intel-gfx] " Nicolin Chen
2022-11-01  4:21             ` Nicolin Chen
2022-11-01 12:54             ` Yi Liu
2022-11-01 12:54               ` [Intel-gfx] " Yi Liu
2022-11-01 12:54               ` Yi Liu
2022-11-01 11:41           ` Jason Gunthorpe
2022-11-01 11:41             ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 11:41             ` Jason Gunthorpe
2022-11-01 12:55             ` Yi Liu
2022-11-01 12:55               ` Yi Liu
2022-11-01 12:55               ` [Intel-gfx] " Yi Liu
2022-11-07 17:17 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Connect VFIO to IOMMUFD (rev2) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=agordeev@linux.ibm.com \
    --cc=airlied@gmail.com \
    --cc=akrowiak@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=daniel@ffwll.ch \
    --cc=diana.craciun@oss.nxp.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=eric.auger@redhat.com \
    --cc=farman@linux.ibm.com \
    --cc=freude@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=iommu@lists.linux.dev \
    --cc=jani.nikula@linux.intel.com \
    --cc=jjherne@linux.ibm.com \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=liulongfang@huawei.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=nicolinc@nvidia.com \
    --cc=oberpar@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=robin.murphy@arm.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=svens@linux.ibm.com \
    --cc=tvrtko.ursulin@linux.intel.com \
    --cc=vneethv@linux.ibm.com \
    --cc=will@kernel.org \
    --cc=yi.l.liu@intel.com \
    --cc=yishaih@nvidia.com \
    --cc=zhenyuw@linux.intel.com \
    --cc=zhi.a.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.