mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
vfio: Move iova_bitmap into iommufd
Both VFIO and IOMMUFD will need iova bitmap for storing dirties and walking the user bitmaps, so move to the common dependency into IOMMUFD. In doing so, create the symbol IOMMUFD_DRIVER which designates the builtin code that will be used by drivers when selected. Today this means MLX5_VFIO_PCI and PDS_VFIO_PCI. IOMMU drivers will do the same (in future patches) when supporting dirty tracking and select IOMMUFD_DRIVER accordingly. Given that the symbol maybe be disabled, add header definitions in iova_bitmap.h for when IOMMUFD_DRIVER=n Link: https://lore.kernel.org/r/20231024135109.73787-3-joao.m.martins@oracle.com Signed-off-by: Joao Martins <joao.m.martins@oracle.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Brett Creeley <brett.creeley@amd.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Reviewed-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
53f0b02021
commit
8c9c727b61
@ -7,6 +7,10 @@ config IOMMU_IOVA
|
||||
config IOMMU_API
|
||||
bool
|
||||
|
||||
config IOMMUFD_DRIVER
|
||||
bool
|
||||
default n
|
||||
|
||||
menuconfig IOMMU_SUPPORT
|
||||
bool "IOMMU Hardware Support"
|
||||
depends on MMU
|
||||
|
@ -11,3 +11,4 @@ iommufd-y := \
|
||||
iommufd-$(CONFIG_IOMMUFD_TEST) += selftest.o
|
||||
|
||||
obj-$(CONFIG_IOMMUFD) += iommufd.o
|
||||
obj-$(CONFIG_IOMMUFD_DRIVER) += iova_bitmap.o
|
||||
|
@ -1,8 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-$(CONFIG_VFIO) += vfio.o
|
||||
|
||||
vfio-y += vfio_main.o \
|
||||
iova_bitmap.o
|
||||
vfio-y += vfio_main.o
|
||||
vfio-$(CONFIG_VFIO_DEVICE_CDEV) += device_cdev.o
|
||||
vfio-$(CONFIG_VFIO_GROUP) += group.o
|
||||
vfio-$(CONFIG_IOMMUFD) += iommufd.o
|
||||
|
@ -3,6 +3,7 @@ config MLX5_VFIO_PCI
|
||||
tristate "VFIO support for MLX5 PCI devices"
|
||||
depends on MLX5_CORE
|
||||
select VFIO_PCI_CORE
|
||||
select IOMMUFD_DRIVER
|
||||
help
|
||||
This provides migration support for MLX5 devices using the VFIO
|
||||
framework.
|
||||
|
@ -5,6 +5,7 @@ config PDS_VFIO_PCI
|
||||
tristate "VFIO support for PDS PCI devices"
|
||||
depends on PDS_CORE
|
||||
select VFIO_PCI_CORE
|
||||
select IOMMUFD_DRIVER
|
||||
help
|
||||
This provides generic PCI support for PDS devices using the VFIO
|
||||
framework.
|
||||
|
@ -7,6 +7,7 @@
|
||||
#define _IOVA_BITMAP_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/errno.h>
|
||||
|
||||
struct iova_bitmap;
|
||||
|
||||
@ -14,6 +15,7 @@ typedef int (*iova_bitmap_fn_t)(struct iova_bitmap *bitmap,
|
||||
unsigned long iova, size_t length,
|
||||
void *opaque);
|
||||
|
||||
#if IS_ENABLED(CONFIG_IOMMUFD_DRIVER)
|
||||
struct iova_bitmap *iova_bitmap_alloc(unsigned long iova, size_t length,
|
||||
unsigned long page_size,
|
||||
u64 __user *data);
|
||||
@ -22,5 +24,29 @@ int iova_bitmap_for_each(struct iova_bitmap *bitmap, void *opaque,
|
||||
iova_bitmap_fn_t fn);
|
||||
void iova_bitmap_set(struct iova_bitmap *bitmap,
|
||||
unsigned long iova, size_t length);
|
||||
#else
|
||||
static inline struct iova_bitmap *iova_bitmap_alloc(unsigned long iova,
|
||||
size_t length,
|
||||
unsigned long page_size,
|
||||
u64 __user *data)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void iova_bitmap_free(struct iova_bitmap *bitmap)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int iova_bitmap_for_each(struct iova_bitmap *bitmap, void *opaque,
|
||||
iova_bitmap_fn_t fn)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline void iova_bitmap_set(struct iova_bitmap *bitmap,
|
||||
unsigned long iova, size_t length)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user