Commit 46a0f223 authored by Daniel Vetter's avatar Daniel Vetter

drm/gma500: Drop dev->struct_mutex from fbdev init/teardown code

This is init/teardown code, locking is just to appease locking checks.
And since gem create/free doesn't need this any more there's really no
reason for grabbing dev->struct_mutex.

Again important to switch obj_unref to _unlocked variants.

Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Acked-by: default avatarPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1448271183-20523-19-git-send-email-daniel.vetter@ffwll.ch
parent 663ab9c4
...@@ -406,8 +406,6 @@ static int psbfb_create(struct psb_fbdev *fbdev, ...@@ -406,8 +406,6 @@ static int psbfb_create(struct psb_fbdev *fbdev,
memset(dev_priv->vram_addr + backing->offset, 0, size); memset(dev_priv->vram_addr + backing->offset, 0, size);
mutex_lock(&dev->struct_mutex);
info = drm_fb_helper_alloc_fbi(&fbdev->psb_fb_helper); info = drm_fb_helper_alloc_fbi(&fbdev->psb_fb_helper);
if (IS_ERR(info)) { if (IS_ERR(info)) {
ret = PTR_ERR(info); ret = PTR_ERR(info);
...@@ -463,17 +461,15 @@ static int psbfb_create(struct psb_fbdev *fbdev, ...@@ -463,17 +461,15 @@ static int psbfb_create(struct psb_fbdev *fbdev,
dev_dbg(dev->dev, "allocated %dx%d fb\n", dev_dbg(dev->dev, "allocated %dx%d fb\n",
psbfb->base.width, psbfb->base.height); psbfb->base.width, psbfb->base.height);
mutex_unlock(&dev->struct_mutex);
return 0; return 0;
out_unref: out_unref:
if (backing->stolen) if (backing->stolen)
psb_gtt_free_range(dev, backing); psb_gtt_free_range(dev, backing);
else else
drm_gem_object_unreference(&backing->gem); drm_gem_object_unreference_unlocked(&backing->gem);
drm_fb_helper_release_fbi(&fbdev->psb_fb_helper); drm_fb_helper_release_fbi(&fbdev->psb_fb_helper);
out_err1: out_err1:
mutex_unlock(&dev->struct_mutex);
psb_gtt_free_range(dev, backing); psb_gtt_free_range(dev, backing);
return ret; return ret;
} }
...@@ -569,7 +565,7 @@ static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev) ...@@ -569,7 +565,7 @@ static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
drm_framebuffer_cleanup(&psbfb->base); drm_framebuffer_cleanup(&psbfb->base);
if (psbfb->gtt) if (psbfb->gtt)
drm_gem_object_unreference(&psbfb->gtt->gem); drm_gem_object_unreference_unlocked(&psbfb->gtt->gem);
return 0; return 0;
} }
...@@ -784,12 +780,8 @@ void psb_modeset_cleanup(struct drm_device *dev) ...@@ -784,12 +780,8 @@ void psb_modeset_cleanup(struct drm_device *dev)
{ {
struct drm_psb_private *dev_priv = dev->dev_private; struct drm_psb_private *dev_priv = dev->dev_private;
if (dev_priv->modeset) { if (dev_priv->modeset) {
mutex_lock(&dev->struct_mutex);
drm_kms_helper_poll_fini(dev); drm_kms_helper_poll_fini(dev);
psb_fbdev_fini(dev); psb_fbdev_fini(dev);
drm_mode_config_cleanup(dev); drm_mode_config_cleanup(dev);
mutex_unlock(&dev->struct_mutex);
} }
} }
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