linux/drivers/gpu/drm/msm
Rob Clark 774449ebcb drm/msm: fix locking inconsistencies in gpu->destroy()
In error paths, this was being called without struct_mutex held.
Leading to panics like:

  msm 1a00000.qcom,mdss_mdp: No memory protection without IOMMU
  Kernel panic - not syncing: BUG!
  CPU: 0 PID: 1409 Comm: cat Not tainted 4.0.0-dirty #4
  Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
  Call trace:
  [<ffffffc000089c78>] dump_backtrace+0x0/0x118
  [<ffffffc000089da0>] show_stack+0x10/0x20
  [<ffffffc0006686d4>] dump_stack+0x84/0xc4
  [<ffffffc0006678b4>] panic+0xd0/0x210
  [<ffffffc0003e1ce4>] drm_gem_object_free+0x5c/0x60
  [<ffffffc000402870>] adreno_gpu_cleanup+0x60/0x80
  [<ffffffc0004035a0>] a3xx_destroy+0x20/0x70
  [<ffffffc0004036f4>] a3xx_gpu_init+0x84/0x108
  [<ffffffc0004018b8>] adreno_load_gpu+0x58/0x190
  [<ffffffc000419dac>] msm_open+0x74/0x88
  [<ffffffc0003e0a48>] drm_open+0x168/0x400
  [<ffffffc0003e7210>] drm_stub_open+0xa8/0x118
  [<ffffffc0001a0e84>] chrdev_open+0x94/0x198
  [<ffffffc000199f88>] do_dentry_open+0x208/0x310
  [<ffffffc00019a4c4>] vfs_open+0x44/0x50
  [<ffffffc0001aa26c>] do_last.isra.14+0x2c4/0xc10
  [<ffffffc0001aac38>] path_openat+0x80/0x5e8
  [<ffffffc0001ac354>] do_filp_open+0x2c/0x98
  [<ffffffc00019b60c>] do_sys_open+0x13c/0x228
  [<ffffffc00019b72c>] SyS_openat+0xc/0x18
  CPU1: stopping

But there isn't any particularly good reason to hold struct_mutex for
teardown, so just standardize on calling it without the mutex held and
use the _unlocked() versions for GEM obj unref'ing

Signed-off-by: Rob Clark <robdclark@gmail.com>
2015-05-15 09:28:27 -04:00
..
adreno drm/msm: fix locking inconsistencies in gpu->destroy() 2015-05-15 09:28:27 -04:00
dsi drm/msm/dsi: Simplify the code to get the number of read byte 2015-05-14 16:57:25 -04:00
edp drm/msm: Attach assigned encoder to eDP and DSI connectors 2015-05-14 16:56:42 -04:00
hdmi drm/msm/hdmi: add 74.176MHz and 154.0MHz pix clks 2015-04-01 19:29:33 -04:00
mdp drm/msm/mdp5: Fix iteration on INTF config array 2015-05-14 11:29:20 -04:00
Kconfig drm/msm: Initial add DSI connector support 2015-04-01 19:29:38 -04:00
Makefile drm/msm/mdp5: Enable DSI connector in msm drm driver 2015-04-01 19:29:38 -04:00
NOTES drm/msm: add mdp5/apq8x74 2014-01-09 14:44:06 -05:00
msm_atomic.c Linux 4.0-rc3 2015-03-09 19:58:30 +10:00
msm_drv.c drm/msm: fix locking inconsistencies in gpu->destroy() 2015-05-15 09:28:27 -04:00
msm_drv.h drm/msm: Initial add DSI connector support 2015-04-01 19:29:38 -04:00
msm_fb.c drm/msm: fix unbalanced DRM framebuffer init/destroy 2015-05-14 11:48:54 -04:00
msm_fbdev.c drm/msm: add support for "stolen" mem 2015-04-01 19:29:33 -04:00
msm_gem.c drm/msm: Fix a couple of 64-bit build warnings 2015-05-14 11:19:25 -04:00
msm_gem.h drm/msm: add support for "stolen" mem 2015-04-01 19:29:33 -04:00
msm_gem_prime.c drm/msm: Allow exported dma-bufs to be mapped 2014-11-16 14:22:43 -05:00
msm_gem_submit.c drm/msm: add rd logging debugfs 2014-06-02 07:36:11 -04:00
msm_gpu.c drm/msm: fix potential deadlock in gpu init 2014-08-04 11:55:29 -04:00
msm_gpu.h drm/msm/adreno: move decision about what gpu to to load 2014-09-10 11:19:08 -04:00
msm_iommu.c drm/msm: Fix a couple of 64-bit build warnings 2015-05-14 11:19:25 -04:00
msm_kms.h drm/msm: Add split display interface 2015-04-01 19:29:37 -04:00
msm_mmu.h drm/msm: use upstream iommu 2014-08-04 11:55:29 -04:00
msm_perf.c drm/msm: add perf logging debugfs 2014-06-02 07:36:21 -04:00
msm_rd.c drm/msm: add rd logging debugfs 2014-06-02 07:36:11 -04:00
msm_ringbuffer.c drm/msm: fix locking inconsistencies in gpu->destroy() 2015-05-15 09:28:27 -04:00
msm_ringbuffer.h drm/msm: add a3xx gpu support 2013-08-24 14:57:18 -04:00