diff options
Diffstat (limited to 'drivers/vfio')
| -rw-r--r-- | drivers/vfio/platform/Makefile | 6 | ||||
| -rw-r--r-- | drivers/vfio/platform/vfio_amba.c | 1 | ||||
| -rw-r--r-- | drivers/vfio/platform/vfio_platform.c | 1 | ||||
| -rw-r--r-- | drivers/vfio/platform/vfio_platform_common.c | 13 | ||||
| -rw-r--r-- | drivers/vfio/platform/vfio_platform_private.h | 1 | 
5 files changed, 18 insertions, 4 deletions
| diff --git a/drivers/vfio/platform/Makefile b/drivers/vfio/platform/Makefile index 9ce8afe28450..41a6224f5e6b 100644 --- a/drivers/vfio/platform/Makefile +++ b/drivers/vfio/platform/Makefile @@ -1,10 +1,12 @@ - -vfio-platform-y := vfio_platform.o vfio_platform_common.o vfio_platform_irq.o +vfio-platform-base-y := vfio_platform_common.o vfio_platform_irq.o +vfio-platform-y := vfio_platform.o  obj-$(CONFIG_VFIO_PLATFORM) += vfio-platform.o +obj-$(CONFIG_VFIO_PLATFORM) += vfio-platform-base.o  obj-$(CONFIG_VFIO_PLATFORM) += reset/  vfio-amba-y := vfio_amba.o  obj-$(CONFIG_VFIO_AMBA) += vfio-amba.o +obj-$(CONFIG_VFIO_AMBA) += vfio-platform-base.o  obj-$(CONFIG_VFIO_AMBA) += reset/ diff --git a/drivers/vfio/platform/vfio_amba.c b/drivers/vfio/platform/vfio_amba.c index ff0331f72526..a66479bd0edf 100644 --- a/drivers/vfio/platform/vfio_amba.c +++ b/drivers/vfio/platform/vfio_amba.c @@ -67,6 +67,7 @@ static int vfio_amba_probe(struct amba_device *adev, const struct amba_id *id)  	vdev->flags = VFIO_DEVICE_FLAGS_AMBA;  	vdev->get_resource = get_amba_resource;  	vdev->get_irq = get_amba_irq; +	vdev->parent_module = THIS_MODULE;  	ret = vfio_platform_probe_common(vdev, &adev->dev);  	if (ret) { diff --git a/drivers/vfio/platform/vfio_platform.c b/drivers/vfio/platform/vfio_platform.c index cef645c83996..f1625dcfbb23 100644 --- a/drivers/vfio/platform/vfio_platform.c +++ b/drivers/vfio/platform/vfio_platform.c @@ -65,6 +65,7 @@ static int vfio_platform_probe(struct platform_device *pdev)  	vdev->flags = VFIO_DEVICE_FLAGS_PLATFORM;  	vdev->get_resource = get_platform_resource;  	vdev->get_irq = get_platform_irq; +	vdev->parent_module = THIS_MODULE;  	ret = vfio_platform_probe_common(vdev, &pdev->dev);  	if (ret) diff --git a/drivers/vfio/platform/vfio_platform_common.c b/drivers/vfio/platform/vfio_platform_common.c index 8c216de883e3..7f69b852c7e2 100644 --- a/drivers/vfio/platform/vfio_platform_common.c +++ b/drivers/vfio/platform/vfio_platform_common.c @@ -23,6 +23,10 @@  #include "vfio_platform_private.h" +#define DRIVER_VERSION  "0.10" +#define DRIVER_AUTHOR   "Antonios Motakis <a.motakis@virtualopensystems.com>" +#define DRIVER_DESC     "VFIO platform base module" +  static DEFINE_MUTEX(driver_lock);  static const struct vfio_platform_reset_combo reset_lookup_table[] = { @@ -146,7 +150,7 @@ static void vfio_platform_release(void *device_data)  	mutex_unlock(&driver_lock); -	module_put(THIS_MODULE); +	module_put(vdev->parent_module);  }  static int vfio_platform_open(void *device_data) @@ -154,7 +158,7 @@ static int vfio_platform_open(void *device_data)  	struct vfio_platform_device *vdev = device_data;  	int ret; -	if (!try_module_get(THIS_MODULE)) +	if (!try_module_get(vdev->parent_module))  		return -ENODEV;  	mutex_lock(&driver_lock); @@ -573,3 +577,8 @@ struct vfio_platform_device *vfio_platform_remove_common(struct device *dev)  	return vdev;  }  EXPORT_SYMBOL_GPL(vfio_platform_remove_common); + +MODULE_VERSION(DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_DESCRIPTION(DRIVER_DESC); diff --git a/drivers/vfio/platform/vfio_platform_private.h b/drivers/vfio/platform/vfio_platform_private.h index 1c9b3d59543c..71286903fb49 100644 --- a/drivers/vfio/platform/vfio_platform_private.h +++ b/drivers/vfio/platform/vfio_platform_private.h @@ -56,6 +56,7 @@ struct vfio_platform_device {  	u32				num_irqs;  	int				refcnt;  	struct mutex			igate; +	struct module			*parent_module;  	/*  	 * These fields should be filled by the bus specific binder | 
