drm/amdgpu: Move MMIO flip out of spinlocked region
[cascardo/linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_display.c
index 5580d34..531627b 100644 (file)
@@ -118,12 +118,12 @@ static void amdgpu_flip_work_func(struct work_struct *__work)
                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 */
        amdgpuCrtc->pflip_status = AMDGPU_FLIP_SUBMITTED;
-
        spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
+
+       /* Do the flip (mmio) */
+       adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base);
 }
 
 /*
@@ -518,7 +518,7 @@ static const struct drm_framebuffer_funcs amdgpu_fb_funcs = {
 int
 amdgpu_framebuffer_init(struct drm_device *dev,
                        struct amdgpu_framebuffer *rfb,
-                       struct drm_mode_fb_cmd2 *mode_cmd,
+                       const struct drm_mode_fb_cmd2 *mode_cmd,
                        struct drm_gem_object *obj)
 {
        int ret;
@@ -535,7 +535,7 @@ amdgpu_framebuffer_init(struct drm_device *dev,
 static struct drm_framebuffer *
 amdgpu_user_framebuffer_create(struct drm_device *dev,
                               struct drm_file *file_priv,
-                              struct drm_mode_fb_cmd2 *mode_cmd)
+                              const struct drm_mode_fb_cmd2 *mode_cmd)
 {
        struct drm_gem_object *obj;
        struct amdgpu_framebuffer *amdgpu_fb;