drm/radeon: rework page flip handling v4
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / radeon / radeon_display.c
index 6b3de5ca5bc7207b2aa43f5ecd52fc869ffee188..d96d1ca74e7064bc75980452c134a7075b2d5f10 100644 (file)
@@ -458,6 +458,9 @@ static void radeon_flip_work_func(struct work_struct *__work)
        /* We borrow the event spin lock for protecting flip_work */
        spin_lock_irqsave(&crtc->dev->event_lock, flags);
 
+       /* update crtc fb */
+       crtc->primary->fb = fb;
+
        /* set the proper interrupt */
        radeon_irq_kms_pflip_irq_get(rdev, radeon_crtc->crtc_id);
 
@@ -519,9 +522,6 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,
                work->fence = radeon_fence_ref(work->new_rbo->tbo.sync_obj);
        spin_unlock(&work->new_rbo->tbo.bdev->fence_lock);
 
-       /* update crtc fb */
-       crtc->primary->fb = fb;
-
        /* We borrow the event spin lock for protecting flip_work */
        spin_lock_irqsave(&crtc->dev->event_lock, flags);