diff mbox series

[v4,8/9] drm/vgem/vgem_drv convert to use faux_device

Message ID 2025021028-brigade-create-37de@gregkh (mailing list archive)
State New, archived
Headers show
Series None | expand

Commit Message

Greg KH Feb. 10, 2025, 12:30 p.m. UTC
The vgem driver does not need to create a platform device, as there is
no real platform resources associated it,  it only did so because it was
simple to do that in order to get a device to use for resource
management of drm resources.  Change the driver to use the faux device
instead as this is NOT a real platform device.

Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
v4: - api tweaked due to parent pointer added to faux_device create
      function.
 v3: new patch in the series.  For an example of the api working, does
     not have to be merged at this time, but I can take it if the
     maintainers give an ack.
 drivers/gpu/drm/vgem/vgem_drv.c | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

Comments

Thomas Zimmermann Feb. 25, 2025, 11:38 a.m. UTC | #1
Hi

Am 10.02.25 um 13:30 schrieb Greg Kroah-Hartman:
> The vgem driver does not need to create a platform device, as there is
> no real platform resources associated it,  it only did so because it was
> simple to do that in order to get a device to use for resource
> management of drm resources.  Change the driver to use the faux device
> instead as this is NOT a real platform device.
>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Simona Vetter <simona@ffwll.ch>
> Cc: dri-devel@lists.freedesktop.org
> Reviewed-by: Lyude Paul <lyude@redhat.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

Should this patch be merged through DRM trees?

Best regards
Thomas

> ---
> v4: - api tweaked due to parent pointer added to faux_device create
>        function.
>   v3: new patch in the series.  For an example of the api working, does
>       not have to be merged at this time, but I can take it if the
>       maintainers give an ack.
>   drivers/gpu/drm/vgem/vgem_drv.c | 30 +++++++++++++++---------------
>   1 file changed, 15 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index 2752ab4f1c97..260c64733972 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -32,7 +32,7 @@
>   
>   #include <linux/dma-buf.h>
>   #include <linux/module.h>
> -#include <linux/platform_device.h>
> +#include <linux/device/faux.h>
>   #include <linux/shmem_fs.h>
>   #include <linux/vmalloc.h>
>   
> @@ -52,7 +52,7 @@
>   
>   static struct vgem_device {
>   	struct drm_device drm;
> -	struct platform_device *platform;
> +	struct faux_device *faux_dev;
>   } *vgem_device;
>   
>   static int vgem_open(struct drm_device *dev, struct drm_file *file)
> @@ -127,27 +127,27 @@ static const struct drm_driver vgem_driver = {
>   static int __init vgem_init(void)
>   {
>   	int ret;
> -	struct platform_device *pdev;
> +	struct faux_device *fdev;
>   
> -	pdev = platform_device_register_simple("vgem", -1, NULL, 0);
> -	if (IS_ERR(pdev))
> -		return PTR_ERR(pdev);
> +	fdev = faux_device_create("vgem", NULL, NULL);
> +	if (!fdev)
> +		return -ENODEV;
>   
> -	if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) {
> +	if (!devres_open_group(&fdev->dev, NULL, GFP_KERNEL)) {
>   		ret = -ENOMEM;
>   		goto out_unregister;
>   	}
>   
> -	dma_coerce_mask_and_coherent(&pdev->dev,
> +	dma_coerce_mask_and_coherent(&fdev->dev,
>   				     DMA_BIT_MASK(64));
>   
> -	vgem_device = devm_drm_dev_alloc(&pdev->dev, &vgem_driver,
> +	vgem_device = devm_drm_dev_alloc(&fdev->dev, &vgem_driver,
>   					 struct vgem_device, drm);
>   	if (IS_ERR(vgem_device)) {
>   		ret = PTR_ERR(vgem_device);
>   		goto out_devres;
>   	}
> -	vgem_device->platform = pdev;
> +	vgem_device->faux_dev = fdev;
>   
>   	/* Final step: expose the device/driver to userspace */
>   	ret = drm_dev_register(&vgem_device->drm, 0);
> @@ -157,19 +157,19 @@ static int __init vgem_init(void)
>   	return 0;
>   
>   out_devres:
> -	devres_release_group(&pdev->dev, NULL);
> +	devres_release_group(&fdev->dev, NULL);
>   out_unregister:
> -	platform_device_unregister(pdev);
> +	faux_device_destroy(fdev);
>   	return ret;
>   }
>   
>   static void __exit vgem_exit(void)
>   {
> -	struct platform_device *pdev = vgem_device->platform;
> +	struct faux_device *fdev = vgem_device->faux_dev;
>   
>   	drm_dev_unregister(&vgem_device->drm);
> -	devres_release_group(&pdev->dev, NULL);
> -	platform_device_unregister(pdev);
> +	devres_release_group(&fdev->dev, NULL);
> +	faux_device_destroy(fdev);
>   }
>   
>   module_init(vgem_init);
Thomas Zimmermann Feb. 26, 2025, 8:18 a.m. UTC | #2
Am 25.02.25 um 12:38 schrieb Thomas Zimmermann:
> Hi
>
> Am 10.02.25 um 13:30 schrieb Greg Kroah-Hartman:
>> The vgem driver does not need to create a platform device, as there is
>> no real platform resources associated it,  it only did so because it was
>> simple to do that in order to get a device to use for resource
>> management of drm resources.  Change the driver to use the faux device
>> instead as this is NOT a real platform device.
>>
>> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> Cc: Maxime Ripard <mripard@kernel.org>
>> Cc: Thomas Zimmermann <tzimmermann@suse.de>
>> Cc: David Airlie <airlied@gmail.com>
>> Cc: Simona Vetter <simona@ffwll.ch>
>> Cc: dri-devel@lists.freedesktop.org
>> Reviewed-by: Lyude Paul <lyude@redhat.com>
>> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
>
> Should this patch be merged through DRM trees?

Louis mentioned that the vkms patch will goes through DRM. If no one 
objects, I'll merge this patch there as well.

Best regards
Thomas

>
> Best regards
> Thomas
>
>> ---
>> v4: - api tweaked due to parent pointer added to faux_device create
>>        function.
>>   v3: new patch in the series.  For an example of the api working, does
>>       not have to be merged at this time, but I can take it if the
>>       maintainers give an ack.
>>   drivers/gpu/drm/vgem/vgem_drv.c | 30 +++++++++++++++---------------
>>   1 file changed, 15 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c 
>> b/drivers/gpu/drm/vgem/vgem_drv.c
>> index 2752ab4f1c97..260c64733972 100644
>> --- a/drivers/gpu/drm/vgem/vgem_drv.c
>> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
>> @@ -32,7 +32,7 @@
>>     #include <linux/dma-buf.h>
>>   #include <linux/module.h>
>> -#include <linux/platform_device.h>
>> +#include <linux/device/faux.h>
>>   #include <linux/shmem_fs.h>
>>   #include <linux/vmalloc.h>
>>   @@ -52,7 +52,7 @@
>>     static struct vgem_device {
>>       struct drm_device drm;
>> -    struct platform_device *platform;
>> +    struct faux_device *faux_dev;
>>   } *vgem_device;
>>     static int vgem_open(struct drm_device *dev, struct drm_file *file)
>> @@ -127,27 +127,27 @@ static const struct drm_driver vgem_driver = {
>>   static int __init vgem_init(void)
>>   {
>>       int ret;
>> -    struct platform_device *pdev;
>> +    struct faux_device *fdev;
>>   -    pdev = platform_device_register_simple("vgem", -1, NULL, 0);
>> -    if (IS_ERR(pdev))
>> -        return PTR_ERR(pdev);
>> +    fdev = faux_device_create("vgem", NULL, NULL);
>> +    if (!fdev)
>> +        return -ENODEV;
>>   -    if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) {
>> +    if (!devres_open_group(&fdev->dev, NULL, GFP_KERNEL)) {
>>           ret = -ENOMEM;
>>           goto out_unregister;
>>       }
>>   -    dma_coerce_mask_and_coherent(&pdev->dev,
>> +    dma_coerce_mask_and_coherent(&fdev->dev,
>>                        DMA_BIT_MASK(64));
>>   -    vgem_device = devm_drm_dev_alloc(&pdev->dev, &vgem_driver,
>> +    vgem_device = devm_drm_dev_alloc(&fdev->dev, &vgem_driver,
>>                        struct vgem_device, drm);
>>       if (IS_ERR(vgem_device)) {
>>           ret = PTR_ERR(vgem_device);
>>           goto out_devres;
>>       }
>> -    vgem_device->platform = pdev;
>> +    vgem_device->faux_dev = fdev;
>>         /* Final step: expose the device/driver to userspace */
>>       ret = drm_dev_register(&vgem_device->drm, 0);
>> @@ -157,19 +157,19 @@ static int __init vgem_init(void)
>>       return 0;
>>     out_devres:
>> -    devres_release_group(&pdev->dev, NULL);
>> +    devres_release_group(&fdev->dev, NULL);
>>   out_unregister:
>> -    platform_device_unregister(pdev);
>> +    faux_device_destroy(fdev);
>>       return ret;
>>   }
>>     static void __exit vgem_exit(void)
>>   {
>> -    struct platform_device *pdev = vgem_device->platform;
>> +    struct faux_device *fdev = vgem_device->faux_dev;
>>         drm_dev_unregister(&vgem_device->drm);
>> -    devres_release_group(&pdev->dev, NULL);
>> -    platform_device_unregister(pdev);
>> +    devres_release_group(&fdev->dev, NULL);
>> +    faux_device_destroy(fdev);
>>   }
>>     module_init(vgem_init);
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index 2752ab4f1c97..260c64733972 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -32,7 +32,7 @@ 
 
 #include <linux/dma-buf.h>
 #include <linux/module.h>
-#include <linux/platform_device.h>
+#include <linux/device/faux.h>
 #include <linux/shmem_fs.h>
 #include <linux/vmalloc.h>
 
@@ -52,7 +52,7 @@ 
 
 static struct vgem_device {
 	struct drm_device drm;
-	struct platform_device *platform;
+	struct faux_device *faux_dev;
 } *vgem_device;
 
 static int vgem_open(struct drm_device *dev, struct drm_file *file)
@@ -127,27 +127,27 @@  static const struct drm_driver vgem_driver = {
 static int __init vgem_init(void)
 {
 	int ret;
-	struct platform_device *pdev;
+	struct faux_device *fdev;
 
-	pdev = platform_device_register_simple("vgem", -1, NULL, 0);
-	if (IS_ERR(pdev))
-		return PTR_ERR(pdev);
+	fdev = faux_device_create("vgem", NULL, NULL);
+	if (!fdev)
+		return -ENODEV;
 
-	if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) {
+	if (!devres_open_group(&fdev->dev, NULL, GFP_KERNEL)) {
 		ret = -ENOMEM;
 		goto out_unregister;
 	}
 
-	dma_coerce_mask_and_coherent(&pdev->dev,
+	dma_coerce_mask_and_coherent(&fdev->dev,
 				     DMA_BIT_MASK(64));
 
-	vgem_device = devm_drm_dev_alloc(&pdev->dev, &vgem_driver,
+	vgem_device = devm_drm_dev_alloc(&fdev->dev, &vgem_driver,
 					 struct vgem_device, drm);
 	if (IS_ERR(vgem_device)) {
 		ret = PTR_ERR(vgem_device);
 		goto out_devres;
 	}
-	vgem_device->platform = pdev;
+	vgem_device->faux_dev = fdev;
 
 	/* Final step: expose the device/driver to userspace */
 	ret = drm_dev_register(&vgem_device->drm, 0);
@@ -157,19 +157,19 @@  static int __init vgem_init(void)
 	return 0;
 
 out_devres:
-	devres_release_group(&pdev->dev, NULL);
+	devres_release_group(&fdev->dev, NULL);
 out_unregister:
-	platform_device_unregister(pdev);
+	faux_device_destroy(fdev);
 	return ret;
 }
 
 static void __exit vgem_exit(void)
 {
-	struct platform_device *pdev = vgem_device->platform;
+	struct faux_device *fdev = vgem_device->faux_dev;
 
 	drm_dev_unregister(&vgem_device->drm);
-	devres_release_group(&pdev->dev, NULL);
-	platform_device_unregister(pdev);
+	devres_release_group(&fdev->dev, NULL);
+	faux_device_destroy(fdev);
 }
 
 module_init(vgem_init);