brcm2708: update linux 4.4 patches to latest version
[lede.git] / target / linux / brcm2708 / patches-4.4 / 0579-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch
1 From 5aecf0a83cc2271427aad4f1a313a3c01e581c03 Mon Sep 17 00:00:00 2001
2 From: Eric Anholt <eric@anholt.net>
3 Date: Thu, 2 Feb 2017 09:42:18 -0800
4 Subject: [PATCH] drm/vc4: Fix sending of page flip completion events in FKMS
5  mode.
6
7 In the rewrite of vc4_crtc.c for fkms, I dropped the part of the
8 CRTC's atomic flush handler that moved the completion event from the
9 proposed atomic state change to the CRTC's current state.  That meant
10 that when full screen pageflipping happened (glxgears -fullscreen in
11 X, compton, por weston), the app would end up blocked firever waiting
12 to draw its next frame.
13
14 Signed-off-by: Eric Anholt <eric@anholt.net>
15 ---
16  drivers/gpu/drm/vc4/vc4_firmware_kms.c | 15 +++++++++++++++
17  1 file changed, 15 insertions(+)
18
19 diff --git a/drivers/gpu/drm/vc4/vc4_firmware_kms.c b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
20 index a1b6511..8f74382 100644
21 --- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c
22 +++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
23 @@ -312,6 +312,21 @@ static int vc4_crtc_atomic_check(struct drm_crtc *crtc,
24  static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
25                                   struct drm_crtc_state *old_state)
26  {
27 +       struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
28 +       struct drm_device *dev = crtc->dev;
29 +
30 +       if (crtc->state->event) {
31 +               unsigned long flags;
32 +
33 +               crtc->state->event->pipe = drm_crtc_index(crtc);
34 +
35 +               WARN_ON(drm_crtc_vblank_get(crtc) != 0);
36 +
37 +               spin_lock_irqsave(&dev->event_lock, flags);
38 +               vc4_crtc->event = crtc->state->event;
39 +               crtc->state->event = NULL;
40 +               spin_unlock_irqrestore(&dev->event_lock, flags);
41 +       }
42  }
43  
44  static void vc4_crtc_handle_page_flip(struct vc4_crtc *vc4_crtc)
45 -- 
46 2.1.4
47