NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/54515: Atomic update failure message in i915/intel_sprite.c
>Number: 54515
>Category: kern
>Synopsis: Atomic update failure message in i915/intel_sprite.c
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Aug 30 19:55:00 +0000 2019
>Originator: Reinoud Zandijk
>Release: NetBSD 9.0_BETA
>Organization:
NetBSD
>Environment:
System: NetBSD dropje 9.0_BETA NetBSD 9.0_BETA (GENERIC) #0: Wed Aug 28 10:01:57 UTC 2019 mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
This machine can crash its i965 GPU under normal 2D usage. Its result is a 60
second display/mouse freeze until it resets the GPU and the machine unfreezes.
In the mean time the i915 driver has dumped its memory to dmesg. At times it
gives
kern error: [drm:(/usr/src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:132)intel_pipe_update_start]
*ERROR* Potential atomic update failure on pipe A: -35
The error -35 under linux is -EAGAIN so most likely interaction between linux
and netbsd code.
Relevant parts from Xorg.log:
[ 50.726] (II) intel(0): [DRI2] Setup complete
[ 50.726] (II) intel(0): [DRI2] DRI driver: i965
[ 50.726] (II) intel(0): [DRI2] VDPAU driver: va_gl
Already running with
Option "AccelMethod" "UXA"
in xorg.conf
>How-To-Repeat:
Boot NetBSD on and amd64 with an i965 GPU and work in X. Using gvim or pidgin
can crash the GPU easily due to its cursor/sprite update.
>Fix:
phone%NetBSD.org@localhost suggested it might have something to do with
external/bsd/common/include/linux/err.h rev 1.3
Possible diagnostic path provided by phone@ (untested) :
https://www.netbsd.org/~mrg/syscall.diff :
---------
Index: sys/arch/x86/x86/syscall.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/syscall.c,v
retrieving revision 1.18
diff -p -u -r1.18 syscall.c
--- sys/arch/x86/x86/syscall.c 6 Apr 2019 11:54:21 -0000 1.18
+++ sys/arch/x86/x86/syscall.c 30 Aug 2019 19:32:00 -0000
@@ -47,6 +47,10 @@ __KERNEL_RCSID(0, "$NetBSD: syscall.c,v
#include <machine/psl.h>
#include <machine/userret.h>
+// XXXMRG
+#include <machine/db_machdep.h>
+#include <ddb/db_interface.h>
+
#include "opt_dtrace.h"
#ifndef __x86_64__
@@ -143,6 +147,12 @@ syscall(struct trapframe *frame)
X86_TF_RFLAGS(frame) &= ~PSL_C; /* carry bit */
} else {
switch (error) {
+#if 1 /* COMPAT_DRM */
+ case ELAST+1: /* linux-y ERESTARTSYS */
+ uprintf("%s: got linux ERESTARTSYS\n", __func__);
+ db_stacktrace();
+#endif
+ /* FALLTHROUGH */
case ERESTART:
/*
* The offset to adjust the PC by depends on whether we
---------
>Unformatted:
Home |
Main Index |
Thread Index |
Old Index