浏览代码

drm/amdgpu: Move MMIO flip out of spinlocked region

Prior actual  MMIO flip we need to acquire DAL mutex to guard
our target state which get modified on reset mode.
Assign page flip status before actual flip to handle
the possible race condition with interrupt.

Signed-off-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Vitaly Prosyak 10 年之前
父节点
当前提交
6bd9e877ce
共有 1 个文件被更改,包括 3 次插入3 次删除
  1. 3 3
      drivers/gpu/drm/amd/amdgpu/amdgpu_display.c

+ 3 - 3
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c

@@ -118,12 +118,12 @@ static void amdgpu_flip_work_func(struct work_struct *__work)
 		spin_lock_irqsave(&crtc->dev->event_lock, flags);
 		spin_lock_irqsave(&crtc->dev->event_lock, flags);
 	};
 	};
 
 
-	/* do the flip (mmio) */
-	adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base);
 	/* set the flip status */
 	/* set the flip status */
 	amdgpuCrtc->pflip_status = AMDGPU_FLIP_SUBMITTED;
 	amdgpuCrtc->pflip_status = AMDGPU_FLIP_SUBMITTED;
-
 	spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
 	spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
+
+	/* Do the flip (mmio) */
+	adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base);
 }
 }
 
 
 /*
 /*