NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
port-amd64/55555: X freezes and message on console about atomic update fail on intel_sprite.c
>Number: 55555
>Category: port-amd64
>Synopsis: X freezes and message on console about atomic update fail on intel_sprite.c
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: port-amd64-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Aug 08 23:40:00 +0000 2020
>Originator: sergio lenzi
>Release: HEAD 9.99.67
>Organization:
k1.com.br
>Environment:
NetBSD desktop64.lenzicasa 9.99.69 NetBSD 9.99.69 (LZTHEAD) #0: Sat Aug 8 18:47:28 -03 2020 NetBSD@install64.netbsd:/home/NetBSD/BUILD/HEAD/amd64/OBJ/sys/arch/amd64/compile/GENERIC amd64
>Description:
Desktop, using mate-desktop and firefox 77, on playing youtube freezes after some time, but not the machine... Message from kernel: Potential atomic update failure on pipe A: -35 the machine is an old dell optiplex 360 with intel G33 builtin graphic chip. using other video adapter (radeon) the system never locks.
This also occurs in the i386 port
>How-To-Repeat:
Install mate-desktop, start firefox, play some videos, the message shows on the console: Potential atomic update failure on pipe A: -35 than some time later, the graphic desktop freezes, or sometimes on play video, a message of BadAlloc not enough resources shows, and the player aborts,
only a reboot can bring the desktop to play videos again
>Fix:
apply the patch to intel_sprite.c
diff -up usr/src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c.orig usr/src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c
--- usr/src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c.orig 2020-08-08 16:37:09.346946639 -0300
+++ usr/src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c 2020-08-08 16:37:25.787602724 -0300
@@ -89,7 +89,7 @@ void intel_pipe_update_start(struct inte
struct drm_device *dev = crtc->base.dev;
const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
enum pipe pipe = crtc->pipe;
- long timeout = msecs_to_jiffies_timeout(1);
+ long timeout = msecs_to_jiffies_timeout(100);
int scanline, min, max, vblank_start;
#ifdef __NetBSD__
drm_waitqueue_t *wq = drm_crtc_vblank_waitqueue(&crtc->base);
@@ -124,7 +124,7 @@ void intel_pipe_update_start(struct inte
trace_i915_pipe_update_start(crtc);
#ifdef __NetBSD__
- DRM_SPIN_TIMED_WAIT_UNTIL(ret, wq, &dev->vbl_lock, timeout,
+ DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, wq, &dev->vbl_lock, timeout,
(scanline = intel_get_crtc_scanline(crtc),
scanline < min || scanline > max));
if (ret <= 0)
Home |
Main Index |
Thread Index |
Old Index