Commit 35cf0350 authored by Rob Clark's avatar Rob Clark Committed by Daniel Vetter

drm: don't let crtc_ww_class leak out

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: default avatarRob Clark <robdclark@gmail.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1479163257-18703-1-git-send-email-robdclark@gmail.com
parent 6bfec6d9
...@@ -102,8 +102,6 @@ int drm_crtc_force_disable_all(struct drm_device *dev) ...@@ -102,8 +102,6 @@ int drm_crtc_force_disable_all(struct drm_device *dev)
} }
EXPORT_SYMBOL(drm_crtc_force_disable_all); EXPORT_SYMBOL(drm_crtc_force_disable_all);
DEFINE_WW_CLASS(crtc_ww_class);
static unsigned int drm_num_crtcs(struct drm_device *dev) static unsigned int drm_num_crtcs(struct drm_device *dev)
{ {
unsigned int num = 0; unsigned int num = 0;
......
...@@ -60,6 +60,8 @@ ...@@ -60,6 +60,8 @@
* lists and lookup data structures. * lists and lookup data structures.
*/ */
static DEFINE_WW_CLASS(crtc_ww_class);
/** /**
* drm_modeset_lock_all - take all modeset locks * drm_modeset_lock_all - take all modeset locks
* @dev: DRM device * @dev: DRM device
...@@ -397,6 +399,17 @@ int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx) ...@@ -397,6 +399,17 @@ int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx)
} }
EXPORT_SYMBOL(drm_modeset_backoff_interruptible); 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 * drm_modeset_lock - take modeset lock
* @lock: lock to take * @lock: lock to take
......
...@@ -82,8 +82,6 @@ struct drm_modeset_lock { ...@@ -82,8 +82,6 @@ struct drm_modeset_lock {
struct list_head head; struct list_head head;
}; };
extern struct ww_class crtc_ww_class;
void drm_modeset_acquire_init(struct drm_modeset_acquire_ctx *ctx, void drm_modeset_acquire_init(struct drm_modeset_acquire_ctx *ctx,
uint32_t flags); uint32_t flags);
void drm_modeset_acquire_fini(struct drm_modeset_acquire_ctx *ctx); 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); ...@@ -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); void drm_modeset_backoff(struct drm_modeset_acquire_ctx *ctx);
int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx); int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx);
/** void drm_modeset_lock_init(struct drm_modeset_lock *lock);
* 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);
}
/** /**
* drm_modeset_lock_fini - cleanup lock * drm_modeset_lock_fini - cleanup lock
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment