On Mon, Nov 14, 2016 at 05:40:57PM -0500, Rob Clark wrote: > kbuild spotted this error, with drm/msm patches that add a new > modeset-lock in the driver and driver built as a module: > > ERROR: "crtc_ww_class" [drivers/gpu/drm/msm/msm.ko] undefined! > > Really the only reason for crtc_ww_class not being internal to > drm_modeset_lock.c is that drm_modeset_lock_init() was static-inline > (for no particularly good reason). > > Fix that, and move crtc_ww_class into drm_modeset_lock.c. > > Signed-off-by: Rob Clark <robdclark@xxxxxxxxx> Applied to drm-misc, thx. -Daniel > --- > This is an alternative to the "drm: export crtc_ww_class" patch. > > drivers/gpu/drm/drm_crtc.c | 2 -- > drivers/gpu/drm/drm_modeset_lock.c | 13 +++++++++++++ > include/drm/drm_modeset_lock.h | 12 +----------- > 3 files changed, 14 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index cf2423d..5d994cc 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -102,8 +102,6 @@ int drm_crtc_force_disable_all(struct drm_device *dev) > } > EXPORT_SYMBOL(drm_crtc_force_disable_all); > > -DEFINE_WW_CLASS(crtc_ww_class); > - > static unsigned int drm_num_crtcs(struct drm_device *dev) > { > unsigned int num = 0; > diff --git a/drivers/gpu/drm/drm_modeset_lock.c b/drivers/gpu/drm/drm_modeset_lock.c > index 61146f5..9059fe3 100644 > --- a/drivers/gpu/drm/drm_modeset_lock.c > +++ b/drivers/gpu/drm/drm_modeset_lock.c > @@ -60,6 +60,8 @@ > * lists and lookup data structures. > */ > > +static DEFINE_WW_CLASS(crtc_ww_class); > + > /** > * drm_modeset_lock_all - take all modeset locks > * @dev: DRM device > @@ -398,6 +400,17 @@ int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx) > EXPORT_SYMBOL(drm_modeset_backoff_interruptible); > > /** > + * drm_modeset_lock_init - initialize lock > + * @lock: lock to init > + */ > +void drm_modeset_lock_init(struct drm_modeset_lock *lock) > +{ > + ww_mutex_init(&lock->mutex, &crtc_ww_class); > + INIT_LIST_HEAD(&lock->head); > +} > +EXPORT_SYMBOL(drm_modeset_lock_init); > + > +/** > * drm_modeset_lock - take modeset lock > * @lock: lock to take > * @ctx: acquire ctx > diff --git a/include/drm/drm_modeset_lock.h b/include/drm/drm_modeset_lock.h > index c5576fb..d918ce4 100644 > --- a/include/drm/drm_modeset_lock.h > +++ b/include/drm/drm_modeset_lock.h > @@ -82,8 +82,6 @@ struct drm_modeset_lock { > struct list_head head; > }; > > -extern struct ww_class crtc_ww_class; > - > void drm_modeset_acquire_init(struct drm_modeset_acquire_ctx *ctx, > uint32_t flags); > void drm_modeset_acquire_fini(struct drm_modeset_acquire_ctx *ctx); > @@ -91,15 +89,7 @@ void drm_modeset_drop_locks(struct drm_modeset_acquire_ctx *ctx); > void drm_modeset_backoff(struct drm_modeset_acquire_ctx *ctx); > int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx); > > -/** > - * drm_modeset_lock_init - initialize lock > - * @lock: lock to init > - */ > -static inline void drm_modeset_lock_init(struct drm_modeset_lock *lock) > -{ > - ww_mutex_init(&lock->mutex, &crtc_ww_class); > - INIT_LIST_HEAD(&lock->head); > -} > +void drm_modeset_lock_init(struct drm_modeset_lock *lock); > > /** > * drm_modeset_lock_fini - cleanup lock > -- > 2.7.4 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel