diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-11-23 04:32:51 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-12-01 04:05:03 -0500 |
commit | 46a0f2234d3a7078808b5416200f55ea2cb1d99b (patch) | |
tree | 5a62356c584da251ca1c01d2c539a6ca4aefe43d | |
parent | 663ab9c4c9b4be8a6aa41d65e3e89194733a5267 (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.c | 12 |
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; |
468 | out_unref: | 465 | out_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); |
475 | out_err1: | 472 | out_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 | } |