On Fri, Oct 23, 2020 at 02:28:10PM +0200, Daniel Vetter wrote: > It's nice if a big function/ioctl table like this is const. Only > downside here is that we need a few more #ifdef to paper over the > differences when CONFIG_DRM_LEGACY is enabled. Maybe provides more > motivation to sunset that horror show :-) > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Cc: Maxime Ripard <mripard@xxxxxxxxxx> > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > Cc: David Airlie <airlied@xxxxxxxx> > Cc: Daniel Vetter <daniel@xxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/drm_drv.c | 15 ++++++++++----- > include/drm/drm_device.h | 4 ++++ > include/drm/drm_drv.h | 5 +++-- > 3 files changed, 17 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index 457ac0f82be2..94d2c41115b8 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -574,7 +574,7 @@ static void drm_dev_init_release(struct drm_device *dev, void *res) > } > > static int drm_dev_init(struct drm_device *dev, > - struct drm_driver *driver, > + const struct drm_driver *driver, > struct device *parent) > { > int ret; > @@ -589,7 +589,11 @@ static int drm_dev_init(struct drm_device *dev, > > kref_init(&dev->ref); > dev->dev = get_device(parent); > +#ifdef CONFIG_DRM_LEGACY > + dev->driver = (struct drm_driver *) driver; checkpatch will tell you to drop space after closing ')' With this super important fix the patch is: Reviewed-by: Sam Ravnborg <sam@xxxxxxxxxxxx> > +#else > dev->driver = driver; > +#endif > > INIT_LIST_HEAD(&dev->managed.resources); > spin_lock_init(&dev->managed.lock); > @@ -663,7 +667,7 @@ static void devm_drm_dev_init_release(void *data) > > static int devm_drm_dev_init(struct device *parent, > struct drm_device *dev, > - struct drm_driver *driver) > + const struct drm_driver *driver) > { > int ret; > > @@ -678,7 +682,8 @@ static int devm_drm_dev_init(struct device *parent, > return ret; > } > > -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver, > +void *__devm_drm_dev_alloc(struct device *parent, > + const struct drm_driver *driver, > size_t size, size_t offset) > { > void *container; > @@ -713,7 +718,7 @@ EXPORT_SYMBOL(__devm_drm_dev_alloc); > * RETURNS: > * Pointer to new DRM device, or ERR_PTR on failure. > */ > -struct drm_device *drm_dev_alloc(struct drm_driver *driver, > +struct drm_device *drm_dev_alloc(const struct drm_driver *driver, > struct device *parent) > { > struct drm_device *dev; > @@ -858,7 +863,7 @@ static void remove_compat_control_link(struct drm_device *dev) > */ > int drm_dev_register(struct drm_device *dev, unsigned long flags) > { > - struct drm_driver *driver = dev->driver; > + const struct drm_driver *driver = dev->driver; > int ret; > > if (!driver->load) > diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h > index f4f68e7a9149..2c361964aee7 100644 > --- a/include/drm/drm_device.h > +++ b/include/drm/drm_device.h > @@ -83,7 +83,11 @@ struct drm_device { > } managed; > > /** @driver: DRM driver managing the device */ > +#ifdef CONFIG_DRM_LEGACY > struct drm_driver *driver; > +#else > + const struct drm_driver *driver; > +#endif > > /** > * @dev_private: > diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h > index 7af220226a25..cc9da43b6eda 100644 > --- a/include/drm/drm_drv.h > +++ b/include/drm/drm_drv.h > @@ -516,7 +516,8 @@ struct drm_driver { > #endif > }; > > -void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver, > +void *__devm_drm_dev_alloc(struct device *parent, > + const struct drm_driver *driver, > size_t size, size_t offset); > > /** > @@ -549,7 +550,7 @@ void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver *driver, > ((type *) __devm_drm_dev_alloc(parent, driver, sizeof(type), \ > offsetof(type, member))) > > -struct drm_device *drm_dev_alloc(struct drm_driver *driver, > +struct drm_device *drm_dev_alloc(const struct drm_driver *driver, > struct device *parent); > int drm_dev_register(struct drm_device *dev, unsigned long flags); > void drm_dev_unregister(struct drm_device *dev); > -- > 2.28.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel