I found out the issue could be reproduced by ffplay'ing one of the
OpenBSD's songs.
I have applied your patch and compiled my own kernel, the issue
seems to be gone.

On Fri, Oct 1 2021 at 16:47:35 +1000, Jonathan Gray <j...@jsg.id.au> wrote:
On Fri, Oct 01, 2021 at 08:27:48AM +0200, ASC wrote:
 >Synopsis: Dropped in an empty tty randomly
 >Category: system
 >Environment:
 System : OpenBSD 7.0
Details : OpenBSD 7.0 (GENERIC.MP) #231: Mon Sep 27 17:23:17 MDT 2021 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP

 Architecture: OpenBSD.amd64
 Machine : amd64
 >Description:
 I was simply browsing with the Tor Browser this morning
 and the screen blacked out. I could type but nothing else.
 The dmesg showed some DRM-related warning.
 >How-To-Repeat:
 Use OpenBSD
 >Fix:
 ???


 revelant dmesg lines:
 inteldrm0 at pci0 dev 2 function 0 "Intel GM45 Video" rev 0x07
 drm0 at inteldrm0
 intagp0 at inteldrm0
 inteldrm0: apic 2 int 16, GM45, gen 4
 inteldrm0: 1280x800, 32bpp
wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation), using wskbd0 drm:pid51001:intel_gt_reset *NOTICE* [drm] Resetting chip for context
 closure in tor-browser<51001>

If you can reproduce this try the following

Index: sys/dev/pci/drm/i915/gem/i915_gem_context.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/i915/gem/i915_gem_context.c,v
retrieving revision 1.5
diff -u -p -r1.5 i915_gem_context.c
--- sys/dev/pci/drm/i915/gem/i915_gem_context.c 18 Jul 2021 10:20:06 -0000 1.5 +++ sys/dev/pci/drm/i915/gem/i915_gem_context.c 1 Oct 2021 06:41:51 -0000
@@ -549,9 +549,10 @@ static void kill_context(struct i915_gem
                }

                /*
- * XXX don't incorrectly reset chip on vlv/ivb/hsw/bdw cause unknown
+                * XXX don't incorrectly reset chip on
+                * gm45/vlv/ivb/hsw/bdw cause unknown
                 */
-               if (IS_GEN_RANGE(ctx->i915, 7, 8)) {
+               if (IS_GEN_RANGE(ctx->i915, 4, 8)) {
                        if (warn) {
                                DRM_DEBUG("%s XXX skipping reset pos %p\n", 
__func__, pos);
                                warn = 0;



Reply via email to