aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_fops.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2016-06-14 14:50:57 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-06-16 04:16:37 -0400
commit1a75a222f5ca1063249b5c92972d32dcc3c8966e (patch)
tree396a78ce075816b8cd4b6d0a86696016aed7eefb /drivers/gpu/drm/drm_fops.c
parente1b1cf2f026b75d1b001816f708dc529b7384750 (diff)
drm: Hide hw.lock cleanup in filp->release better
A few things: - Rename the cleanup function from drm_master_release to drm_legacy_lock_release. It doesn't relase any master stuff, but just the legacy hw lock. - Hide it in drm_lock.c, which allows us to make a few more functions static in there. To avoid forward decl we need to shuffle the code a bit though. - Push the check for ->master into the function itself. - Only call this for !DRIVER_MODESET. End result: Another place that takes struct_mutex gone for good for modern drivers. v2: Remove leftover comment. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1465930269-7883-3-git-send-email-daniel.vetter@ffwll.ch
Diffstat (limited to 'drivers/gpu/drm/drm_fops.c')
-rw-r--r--drivers/gpu/drm/drm_fops.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index a27bc7cda975..2fd4f42b907a 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c
@@ -338,18 +338,6 @@ out_prime_destroy:
338 return ret; 338 return ret;
339} 339}
340 340
341static void drm_master_release(struct drm_device *dev, struct file *filp)
342{
343 struct drm_file *file_priv = filp->private_data;
344
345 if (drm_legacy_i_have_hw_lock(dev, file_priv)) {
346 DRM_DEBUG("File %p released, freeing lock for context %d\n",
347 filp, _DRM_LOCKING_CONTEXT(file_priv->master->lock.hw_lock->lock));
348 drm_legacy_lock_free(&file_priv->master->lock,
349 _DRM_LOCKING_CONTEXT(file_priv->master->lock.hw_lock->lock));
350 }
351}
352
353static void drm_events_release(struct drm_file *file_priv) 341static void drm_events_release(struct drm_file *file_priv)
354{ 342{
355 struct drm_device *dev = file_priv->minor->dev; 343 struct drm_device *dev = file_priv->minor->dev;
@@ -468,9 +456,8 @@ int drm_release(struct inode *inode, struct file *filp)
468 (long)old_encode_dev(file_priv->minor->kdev->devt), 456 (long)old_encode_dev(file_priv->minor->kdev->devt),
469 dev->open_count); 457 dev->open_count);
470 458
471 /* if the master has gone away we can't do anything with the lock */ 459 if (!drm_core_check_feature(dev, DRIVER_MODESET))
472 if (file_priv->minor->master) 460 drm_legacy_lock_release(dev, filp);
473 drm_master_release(dev, filp);
474 461
475 if (drm_core_check_feature(dev, DRIVER_HAVE_DMA)) 462 if (drm_core_check_feature(dev, DRIVER_HAVE_DMA))
476 drm_legacy_reclaim_buffers(dev, file_priv); 463 drm_legacy_reclaim_buffers(dev, file_priv);