Add patch to fix desktop lockups on RPi (vc4) RHBZ# 1389163
This commit is contained in:
parent
9b39e16c8f
commit
2153e0b50f
|
@ -538,6 +538,8 @@ Patch434: 0001-i2c-bcm2835-Debug-test-for-curr_msg.patch
|
|||
# Upstream fixes for i2c/serial/ethernet MAC addresses
|
||||
Patch435: bcm283x-fixes.patch
|
||||
|
||||
Patch436: vc4-fix-vblank-cursor-update-issue.patch
|
||||
|
||||
# http://www.spinics.net/lists/arm-kernel/msg552554.html
|
||||
Patch438: arm-imx6-hummingboard2.patch
|
||||
|
||||
|
@ -2179,6 +2181,9 @@ fi
|
|||
#
|
||||
#
|
||||
%changelog
|
||||
* Wed Mar 1 2017 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||
- Add patch to fix desktop lockups on RPi (vc4) RHBZ# 1389163
|
||||
|
||||
* Tue Feb 28 2017 Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
- Fix kernel-devel virtual provide
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
From 6d24c1c5918907ab78a5729b78c0d165deb3cc2b Mon Sep 17 00:00:00 2001
|
||||
From: Michael Zoran <mzoran@crowfest.net>
|
||||
Date: Thu, 23 Feb 2017 17:54:31 -0800
|
||||
Subject: drm/vc4: Don't wait for vblank when updating the cursor
|
||||
|
||||
Commonly used desktop environments such as xfce4 and gnome
|
||||
on debian sid can flood the graphics drivers with cursor
|
||||
updates. Because the current implementation is waiting
|
||||
for a vblank between cursor updates, this will cause the
|
||||
display to hang for a long time since a typical refresh
|
||||
rate is only 60Hz.
|
||||
|
||||
This is unnecessary and unexpected by user mode software,
|
||||
so simply swap out the cursor frame buffer without waiting.
|
||||
|
||||
Signed-off-by: Michael Zoran <mzoran@crowfest.net>
|
||||
Reviewed-by: Eric Anholt <eric@anholt.net>
|
||||
Link: http://patchwork.freedesktop.org/patch/msgid/20170224015431.24583-1-mzoran@crowfest.net
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
|
||||
index f7a229d..110224c 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_plane.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "vc4_drv.h"
|
||||
#include "vc4_regs.h"
|
||||
+#include "drm_atomic.h"
|
||||
#include "drm_atomic_helper.h"
|
||||
#include "drm_fb_cma_helper.h"
|
||||
#include "drm_plane_helper.h"
|
||||
@@ -769,12 +770,6 @@ vc4_update_plane(struct drm_plane *plane,
|
||||
if (!plane_state)
|
||||
goto out;
|
||||
|
||||
- /* If we're changing the cursor contents, do that in the
|
||||
- * normal vblank-synced atomic path.
|
||||
- */
|
||||
- if (fb != plane_state->fb)
|
||||
- goto out;
|
||||
-
|
||||
/* No configuring new scaling in the fast path. */
|
||||
if (crtc_w != plane_state->crtc_w ||
|
||||
crtc_h != plane_state->crtc_h ||
|
||||
@@ -783,6 +778,11 @@ vc4_update_plane(struct drm_plane *plane,
|
||||
goto out;
|
||||
}
|
||||
|
||||
+ if (fb != plane_state->fb) {
|
||||
+ drm_atomic_set_fb_for_plane(plane->state, fb);
|
||||
+ vc4_plane_async_set_fb(plane, fb);
|
||||
+ }
|
||||
+
|
||||
/* Set the cursor's position on the screen. This is the
|
||||
* expected change from the drm_mode_cursor_universal()
|
||||
* helper.
|
||||
--
|
||||
cgit v0.10.2
|
||||
|
Loading…
Reference in New Issue