aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2015-11-23 04:32:51 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-12-01 04:05:03 -0500
commit46a0f2234d3a7078808b5416200f55ea2cb1d99b (patch)
tree5a62356c584da251ca1c01d2c539a6ca4aefe43d
parent663ab9c4c9b4be8a6aa41d65e3e89194733a5267 (diff)
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: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1448271183-20523-19-git-send-email-daniel.vetter@ffwll.ch
-rw-r--r--drivers/gpu/drm/gma500/framebuffer.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index dc0508dca1d4..ee95c03a8c54 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -406,8 +406,6 @@ static int psbfb_create(struct psb_fbdev *fbdev,
406 406
407 memset(dev_priv->vram_addr + backing->offset, 0, size); 407 memset(dev_priv->vram_addr + backing->offset, 0, size);
408 408
409 mutex_lock(&dev->struct_mutex);
410
411 info = drm_fb_helper_alloc_fbi(&fbdev->psb_fb_helper); 409 info = drm_fb_helper_alloc_fbi(&fbdev->psb_fb_helper);
412 if (IS_ERR(info)) { 410 if (IS_ERR(info)) {
413 ret = PTR_ERR(info); 411 ret = PTR_ERR(info);
@@ -463,17 +461,15 @@ static int psbfb_create(struct psb_fbdev *fbdev,
463 dev_dbg(dev->dev, "allocated %dx%d fb\n", 461 dev_dbg(dev->dev, "allocated %dx%d fb\n",
464 psbfb->base.width, psbfb->base.height); 462 psbfb->base.width, psbfb->base.height);
465 463
466 mutex_unlock(&dev->struct_mutex);
467 return 0; 464 return 0;
468out_unref: 465out_unref:
469 if (backing->stolen) 466 if (backing->stolen)
470 psb_gtt_free_range(dev, backing); 467 psb_gtt_free_range(dev, backing);
471 else 468 else
472 drm_gem_object_unreference(&backing->gem); 469 drm_gem_object_unreference_unlocked(&backing->gem);
473 470
474 drm_fb_helper_release_fbi(&fbdev->psb_fb_helper); 471 drm_fb_helper_release_fbi(&fbdev->psb_fb_helper);
475out_err1: 472out_err1:
476 mutex_unlock(&dev->struct_mutex);
477 psb_gtt_free_range(dev, backing); 473 psb_gtt_free_range(dev, backing);
478 return ret; 474 return ret;
479} 475}
@@ -569,7 +565,7 @@ static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
569 drm_framebuffer_cleanup(&psbfb->base); 565 drm_framebuffer_cleanup(&psbfb->base);
570 566
571 if (psbfb->gtt) 567 if (psbfb->gtt)
572 drm_gem_object_unreference(&psbfb->gtt->gem); 568 drm_gem_object_unreference_unlocked(&psbfb->gtt->gem);
573 return 0; 569 return 0;
574} 570}
575 571
@@ -784,12 +780,8 @@ void psb_modeset_cleanup(struct drm_device *dev)
784{ 780{
785 struct drm_psb_private *dev_priv = dev->dev_private; 781 struct drm_psb_private *dev_priv = dev->dev_private;
786 if (dev_priv->modeset) { 782 if (dev_priv->modeset) {
787 mutex_lock(&dev->struct_mutex);
788
789 drm_kms_helper_poll_fini(dev); 783 drm_kms_helper_poll_fini(dev);
790 psb_fbdev_fini(dev); 784 psb_fbdev_fini(dev);
791 drm_mode_config_cleanup(dev); 785 drm_mode_config_cleanup(dev);
792
793 mutex_unlock(&dev->struct_mutex);
794 } 786 }
795} 787}