drm/msm: fix potential deadlock in gpu init
Somewhere along the way, the firmware loader sprouted another lock dependency, resulting in possible deadlock scenario: &dev->struct_mutex --> &sb->s_type->i_mutex_key#2 --> &mm->mmap_sem which is problematic vs things like gem mmap. So introduce a separate mutex to synchronize gpu init. Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
@@ -612,8 +612,11 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev,
|
||||
}
|
||||
gpu->id = msm_register_mmu(drm, gpu->mmu);
|
||||
|
||||
|
||||
/* Create ringbuffer: */
|
||||
mutex_lock(&drm->struct_mutex);
|
||||
gpu->rb = msm_ringbuffer_new(gpu, ringsz);
|
||||
mutex_unlock(&drm->struct_mutex);
|
||||
if (IS_ERR(gpu->rb)) {
|
||||
ret = PTR_ERR(gpu->rb);
|
||||
gpu->rb = NULL;
|
||||
|
Reference in New Issue
Block a user