On Thu, Feb 06, 2025 at 03:03:41PM -0500, Lyude Paul wrote: > Lol, I wrote up a patch for this last night but it looks like you got here > first :P > > On Thu, 2025-02-06 at 18:38 +0100, Greg Kroah-Hartman wrote: > > The vkms 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: Louis Chauvet <louis.chauvet@xxxxxxxxxxx> > > Cc: Haneen Mohammed <hamohammed.sa@xxxxxxxxx> > > Cc: Simona Vetter <simona@xxxxxxxx> > > Cc: Melissa Wen <melissa.srw@xxxxxxxxx> > > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > > Cc: Maxime Ripard <mripard@xxxxxxxxxx> > > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > > Cc: David Airlie <airlied@xxxxxxxxx> > > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx > > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > --- > > 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/vkms/vkms_drv.c | 28 ++++++++++++++-------------- > > drivers/gpu/drm/vkms/vkms_drv.h | 4 ++-- > > 2 files changed, 16 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c > > index e0409aba9349..b1269f984886 100644 > > --- a/drivers/gpu/drm/vkms/vkms_drv.c > > +++ b/drivers/gpu/drm/vkms/vkms_drv.c > > @@ -10,7 +10,7 @@ > > */ > > > > #include <linux/module.h> > > -#include <linux/platform_device.h> > > +#include <linux/device/faux.h> > > #include <linux/dma-mapping.h> > > > > #include <drm/clients/drm_client_setup.h> > > @@ -177,25 +177,25 @@ static int vkms_modeset_init(struct vkms_device *vkmsdev) > > static int vkms_create(struct vkms_config *config) > > { > > int ret; > > - struct platform_device *pdev; > > + struct faux_device *fdev; > > struct vkms_device *vkms_device; > > > > - pdev = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); > > - if (IS_ERR(pdev)) > > - return PTR_ERR(pdev); > > + fdev = faux_device_create(DRIVER_NAME, 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; > > } > > > > - vkms_device = devm_drm_dev_alloc(&pdev->dev, &vkms_driver, > > + vkms_device = devm_drm_dev_alloc(&fdev->dev, &vkms_driver, > > struct vkms_device, drm); > > if (IS_ERR(vkms_device)) { > > ret = PTR_ERR(vkms_device); > > goto out_devres; > > } > > - vkms_device->platform = pdev; > > + vkms_device->faux_dev = fdev; > > vkms_device->config = config; > > config->dev = vkms_device; > > > > @@ -229,9 +229,9 @@ static int vkms_create(struct vkms_config *config) > > 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; > > } > > > > @@ -259,19 +259,19 @@ static int __init vkms_init(void) > > > > static void vkms_destroy(struct vkms_config *config) > > { > > - struct platform_device *pdev; > > + struct faux_device *fdev; > > > > if (!config->dev) { > > DRM_INFO("vkms_device is NULL.\n"); > > return; > > } > > > > - pdev = config->dev->platform; > > + fdev = config->dev->faux_dev; > > > > drm_dev_unregister(&config->dev->drm); > > drm_atomic_helper_shutdown(&config->dev->drm); > > - devres_release_group(&pdev->dev, NULL); > > - platform_device_unregister(pdev); > > + devres_release_group(&fdev->dev, NULL); > > + faux_device_destroy(fdev); > > > > config->dev = NULL; > > } > > diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h > > index 00541eff3d1b..4668b0e29a84 100644 > > --- a/drivers/gpu/drm/vkms/vkms_drv.h > > +++ b/drivers/gpu/drm/vkms/vkms_drv.h > > @@ -209,13 +209,13 @@ struct vkms_config { > > * struct vkms_device - Description of a VKMS device > > * > > * @drm - Base device in DRM > > - * @platform - Associated platform device > > + * @faux_dev- Associated faux device > > Small nitpick - you dropped the space on the - here by mistake Ick, good catch. > With that fixed: > > Reviewed-by: Lyude Paul <lyude@xxxxxxxxxx> Thanks for the review! greg k-h