Message ID | 20190423020041.32702-8-airlied@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/12] drm/nouveau: add kconfig option to turn off nouveau legacy contexts. (v2) | expand |
On Tue, Apr 23, 2019 at 12:00:36PM +1000, Dave Airlie wrote: > From: Dave Airlie <airlied@redhat.com> > > This will allow easier removal later. > > Signed-off-by: Dave Airlie <airlied@redhat.com> > --- > drivers/gpu/drm/drm_drv.c | 10 +++------- > drivers/gpu/drm/drm_legacy.h | 14 ++++++++++++++ > 2 files changed, 17 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index 18f45f9a955c..e4f36c5ccfcd 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -659,20 +659,16 @@ int drm_dev_init(struct drm_device *dev, > /* no per-device feature limits by default */ > dev->driver_features = ~0u; > > + drm_legacy_init_members(dev); > INIT_LIST_HEAD(&dev->filelist); > INIT_LIST_HEAD(&dev->filelist_internal); > INIT_LIST_HEAD(&dev->clientlist); > - INIT_LIST_HEAD(&dev->ctxlist); > - INIT_LIST_HEAD(&dev->vmalist); > - INIT_LIST_HEAD(&dev->maplist); > INIT_LIST_HEAD(&dev->vblank_event_list); > > - spin_lock_init(&dev->buf_lock); > spin_lock_init(&dev->event_lock); > mutex_init(&dev->struct_mutex); > mutex_init(&dev->filelist_mutex); > mutex_init(&dev->clientlist_mutex); > - mutex_init(&dev->ctxlist_mutex); > mutex_init(&dev->master_mutex); > > dev->anon_inode = drm_fs_inode_new(); > @@ -724,7 +720,7 @@ int drm_dev_init(struct drm_device *dev, > err_free: > put_device(dev->dev); > mutex_destroy(&dev->master_mutex); > - mutex_destroy(&dev->ctxlist_mutex); > + drm_legacy_destroy_members(dev); > mutex_destroy(&dev->clientlist_mutex); > mutex_destroy(&dev->filelist_mutex); > mutex_destroy(&dev->struct_mutex); > @@ -800,7 +796,7 @@ void drm_dev_fini(struct drm_device *dev) > put_device(dev->dev); > > mutex_destroy(&dev->master_mutex); > - mutex_destroy(&dev->ctxlist_mutex); > + drm_legacy_destroy_members(dev); > mutex_destroy(&dev->clientlist_mutex); > mutex_destroy(&dev->filelist_mutex); > mutex_destroy(&dev->struct_mutex); > diff --git a/drivers/gpu/drm/drm_legacy.h b/drivers/gpu/drm/drm_legacy.h > index ef419d500e51..20c4befc476b 100644 > --- a/drivers/gpu/drm/drm_legacy.h > +++ b/drivers/gpu/drm/drm_legacy.h > @@ -136,5 +136,19 @@ int drm_legacy_sg_alloc(struct drm_device *dev, void *data, > int drm_legacy_sg_free(struct drm_device *dev, void *data, > struct drm_file *file_priv); > > +static inline void drm_legacy_init_members(struct drm_device *dev) > +{ > + INIT_LIST_HEAD(&dev->ctxlist); > + INIT_LIST_HEAD(&dev->vmalist); > + INIT_LIST_HEAD(&dev->maplist); > + spin_lock_init(&dev->buf_lock); > + mutex_init(&dev->ctxlist_mutex); > +} > + > +static inline void drm_legacy_destroy_members(struct drm_device *dev) > +{ > + mutex_destroy(&dev->ctxlist_mutex); > +} I think with the other inline functions you stuff into drm_legacy.h it'd justification enough to create a drm_legacy_misc.c. Not drm_legacy.c because then you can't include other files into drm_legacy.ko because Kbuild is silly :-) With that: Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > + > void drm_legacy_lock_master_cleanup(struct drm_device *dev, struct drm_master *master); > #endif /* __DRM_LEGACY_H__ */ > -- > 2.20.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi Dave. On Tue, Apr 23, 2019 at 12:00:36PM +1000, Dave Airlie wrote: > From: Dave Airlie <airlied@redhat.com> > > This will allow easier removal later. > > Signed-off-by: Dave Airlie <airlied@redhat.com> > --- > drivers/gpu/drm/drm_drv.c | 10 +++------- > drivers/gpu/drm/drm_legacy.h | 14 ++++++++++++++ > 2 files changed, 17 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index 18f45f9a955c..e4f36c5ccfcd 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -659,20 +659,16 @@ int drm_dev_init(struct drm_device *dev, > /* no per-device feature limits by default */ > dev->driver_features = ~0u; > > + drm_legacy_init_members(dev); > INIT_LIST_HEAD(&dev->filelist); > INIT_LIST_HEAD(&dev->filelist_internal); > INIT_LIST_HEAD(&dev->clientlist); > - INIT_LIST_HEAD(&dev->ctxlist); > - INIT_LIST_HEAD(&dev->vmalist); > - INIT_LIST_HEAD(&dev->maplist); > INIT_LIST_HEAD(&dev->vblank_event_list); > > - spin_lock_init(&dev->buf_lock); > spin_lock_init(&dev->event_lock); > mutex_init(&dev->struct_mutex); > mutex_init(&dev->filelist_mutex); > mutex_init(&dev->clientlist_mutex); > - mutex_init(&dev->ctxlist_mutex); > mutex_init(&dev->master_mutex); > > dev->anon_inode = drm_fs_inode_new(); > @@ -724,7 +720,7 @@ int drm_dev_init(struct drm_device *dev, > err_free: > put_device(dev->dev); > mutex_destroy(&dev->master_mutex); > - mutex_destroy(&dev->ctxlist_mutex); > + drm_legacy_destroy_members(dev); > mutex_destroy(&dev->clientlist_mutex); > mutex_destroy(&dev->filelist_mutex); > mutex_destroy(&dev->struct_mutex); I do not know if it has any practical influence. But my OCD tirgger when we do not destroy the mutex in the opposite order we init them. This was so before, but as the init order changed we could also change the destroy order. Moving the drm_legacy_destroy_members() down should do it. > @@ -800,7 +796,7 @@ void drm_dev_fini(struct drm_device *dev) > put_device(dev->dev); > > mutex_destroy(&dev->master_mutex); > - mutex_destroy(&dev->ctxlist_mutex); > + drm_legacy_destroy_members(dev); > mutex_destroy(&dev->clientlist_mutex); > mutex_destroy(&dev->filelist_mutex); > mutex_destroy(&dev->struct_mutex); Same here. > diff --git a/drivers/gpu/drm/drm_legacy.h b/drivers/gpu/drm/drm_legacy.h > index ef419d500e51..20c4befc476b 100644 > --- a/drivers/gpu/drm/drm_legacy.h > +++ b/drivers/gpu/drm/drm_legacy.h > @@ -136,5 +136,19 @@ int drm_legacy_sg_alloc(struct drm_device *dev, void *data, > int drm_legacy_sg_free(struct drm_device *dev, void *data, > struct drm_file *file_priv); > > +static inline void drm_legacy_init_members(struct drm_device *dev) > +{ > + INIT_LIST_HEAD(&dev->ctxlist); > + INIT_LIST_HEAD(&dev->vmalist); > + INIT_LIST_HEAD(&dev->maplist); > + spin_lock_init(&dev->buf_lock); > + mutex_init(&dev->ctxlist_mutex); > +} > + > +static inline void drm_legacy_destroy_members(struct drm_device *dev) > +{ > + mutex_destroy(&dev->ctxlist_mutex); > +} Sam
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 18f45f9a955c..e4f36c5ccfcd 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -659,20 +659,16 @@ int drm_dev_init(struct drm_device *dev, /* no per-device feature limits by default */ dev->driver_features = ~0u; + drm_legacy_init_members(dev); INIT_LIST_HEAD(&dev->filelist); INIT_LIST_HEAD(&dev->filelist_internal); INIT_LIST_HEAD(&dev->clientlist); - INIT_LIST_HEAD(&dev->ctxlist); - INIT_LIST_HEAD(&dev->vmalist); - INIT_LIST_HEAD(&dev->maplist); INIT_LIST_HEAD(&dev->vblank_event_list); - spin_lock_init(&dev->buf_lock); spin_lock_init(&dev->event_lock); mutex_init(&dev->struct_mutex); mutex_init(&dev->filelist_mutex); mutex_init(&dev->clientlist_mutex); - mutex_init(&dev->ctxlist_mutex); mutex_init(&dev->master_mutex); dev->anon_inode = drm_fs_inode_new(); @@ -724,7 +720,7 @@ int drm_dev_init(struct drm_device *dev, err_free: put_device(dev->dev); mutex_destroy(&dev->master_mutex); - mutex_destroy(&dev->ctxlist_mutex); + drm_legacy_destroy_members(dev); mutex_destroy(&dev->clientlist_mutex); mutex_destroy(&dev->filelist_mutex); mutex_destroy(&dev->struct_mutex); @@ -800,7 +796,7 @@ void drm_dev_fini(struct drm_device *dev) put_device(dev->dev); mutex_destroy(&dev->master_mutex); - mutex_destroy(&dev->ctxlist_mutex); + drm_legacy_destroy_members(dev); mutex_destroy(&dev->clientlist_mutex); mutex_destroy(&dev->filelist_mutex); mutex_destroy(&dev->struct_mutex); diff --git a/drivers/gpu/drm/drm_legacy.h b/drivers/gpu/drm/drm_legacy.h index ef419d500e51..20c4befc476b 100644 --- a/drivers/gpu/drm/drm_legacy.h +++ b/drivers/gpu/drm/drm_legacy.h @@ -136,5 +136,19 @@ int drm_legacy_sg_alloc(struct drm_device *dev, void *data, int drm_legacy_sg_free(struct drm_device *dev, void *data, struct drm_file *file_priv); +static inline void drm_legacy_init_members(struct drm_device *dev) +{ + INIT_LIST_HEAD(&dev->ctxlist); + INIT_LIST_HEAD(&dev->vmalist); + INIT_LIST_HEAD(&dev->maplist); + spin_lock_init(&dev->buf_lock); + mutex_init(&dev->ctxlist_mutex); +} + +static inline void drm_legacy_destroy_members(struct drm_device *dev) +{ + mutex_destroy(&dev->ctxlist_mutex); +} + void drm_legacy_lock_master_cleanup(struct drm_device *dev, struct drm_master *master); #endif /* __DRM_LEGACY_H__ */