NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/56103: i915 crashes kernel



The following reply was made to PR kern/56103; it has been noted by GNATS.

From: Stefan Schaeckeler <schaecsn%gmx.net@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/56103: i915 crashes kernel
Date: Mon, 18 Oct 2021 22:27:35 -0700 (PDT)

 > From: gnats-admin%netbsd.org@localhost
 >
 > Thank you very much for your problem report.
 > It has the internal identification `kern/56103'.
 > The individual assigned to look at your
 > report is: kern-bug-people.
 >
 > >Category:       kern
 > >Responsible:    kern-bug-people
 > >Synopsis:       i915 crashes kernel
 > >Arrival-Date:   Mon Apr 12 04:55:00 +0000 2021
 >
 
 =46rom a Google search, I learned that this is a common problem on NetBSD.=
  The
 recommended workaround is switching to uxa acceleration. Uxa acceleration =
 works
 for a few hours, days or weeks. Eventually, the uxa driver fails for me in
 
 ./external/mit/xf86-video-intel/dist/src/uxa/intel_batchbuffer.c with
 
 [ 26933.347] (EE) intel(0): Failed to submit batch buffer, expect renderin=
 g corruption: Cannot allocate memory.
 
 
 I don't see a rendering corruption; this results in multimedia application=
 s
 segfaulting in /usr/X11R7/lib/modules/dri/i965_dri.so. Only a restart of t=
 he X
 server makes multimedia applications work, again. Here is a segfault of ff=
 play:
 
 $ gdb ffplay -c ffplay.core
 GNU gdb (GDB) 8.3
 ...
 Reading symbols from ffplay...
 [New process 1]
 [New process 16]
 [New process 15]
 [New process 14]
 [New process 13]
 [New process 12]
 [New process 11]
 [New process 10]
 [New process 9]
 [New process 8]
 [New process 7]
 [New process 4]
 [New process 3]
 [New process 2]
 Core was generated by `ffplay'.
 Program terminated with signal SIGSEGV, Segmentation fault.
 #0  0x000071b08a541007 in gen6_update_renderbuffer_surface (surf_index=3D0=
 , unit=3D0, rb=3D0x71b0a3ba5b00, brw=3D0x71b0a20a6f30)
     at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_w=
 m_surface_state.c:253
 253           .base_level =3D irb->mt_level - irb->mt->first_level,
 [Current thread is 1 (process 1)]
 
 (gdb) bt
 #0  0x000071b08a541007 in gen6_update_renderbuffer_surface (surf_index=3D0=
 , unit=3D0, rb=3D0x71b0a3ba5b00, brw=3D0x71b0a20a6f30)
     at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_w=
 m_surface_state.c:253
 #1  update_renderbuffer_surfaces (brw=3D0x71b0a20a6f30) at /usr/xsrc/exter=
 nal/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_wm_surface_state.c:1013
 #2  0x000071b08a7e2e04 in check_and_emit_atom (atom=3D0x71b0a20bde18, stat=
 e=3D<synthetic pointer>, brw=3D0x71b0a20a6f30)
     at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_s=
 tate_upload.c:496
 #3  brw_upload_pipeline_state (pipeline=3DBRW_RENDER_PIPELINE, brw=3D0x71b=
 0a20a6f30)
     at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_s=
 tate_upload.c:615
 #4  brw_upload_render_state (brw=3D0x71b0a20a6f30) at /usr/xsrc/external/m=
 it/MesaLib/dist/src/mesa/drivers/dri/i965/brw_state_upload.c:637
 #5  0x000071b08a625f13 in brw_draw_single_prim (indirect=3D0x0, stream=3D0=
 , xfb_obj=3D0x0, prim_id=3D0, prim=3D<optimized out>, ctx=3D0x71b0a20a6f30=
 )
     at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_d=
 raw.c:987
 #6  brw_draw_prims (ctx=3D0x71b0a20a6f30, prims=3D<optimized out>, nr_prim=
 s=3D1, ib=3D<optimized out>, index_bounds_valid=3D<optimized out>, min_ind=
 ex=3D<optimized out>,
     max_index=3D<optimized out>, gl_xfb_obj=3D0x0, stream=3D0, indirect=3D=
 0x0) at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/drivers/dri/i965/brw_=
 draw.c:1107
 #7  0x000071b08a3d0bd5 in vbo_exec_vtx_flush (exec=3Dexec@entry=3D0x71b0a3=
 b48a70, keepUnmapped=3D<optimized out>)
     at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec_draw.c:39=
 3
 #8  0x000071b08a3d1b72 in vbo_exec_FlushVertices_internal (exec=3D0x71b0a3=
 b48a70, unmap=3D<optimized out>)
     at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec_api.c:643
 #9  0x000071b08a3e387c in vbo_exec_FlushVertices (ctx=3Dctx@entry=3D0x71b0=
 a20a6f30, flags=3Dflags@entry=3D1)
     at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/vbo/vbo_exec_api.c:125=
 5
 #10 0x000071b08a494835 in clear (no_error=3Dfalse, mask=3D16384, ctx=3D0x7=
 1b0a20a6f30) at /usr/xsrc/external/mit/MesaLib/dist/src/mesa/main/clear.c:=
 146
 #11 _mesa_Clear (mask=3D16384) at /usr/xsrc/external/mit/MesaLib/dist/src/=
 mesa/main/clear.c:242
 #12 0x000071b0a085377a in GL_RunCommandQueue (renderer=3D0x71b0a3baaa00, c=
 md=3D0x71b0a3b63750, vertices=3D0x71b0a41b1800, vertsize=3D<optimized out>=
 )
     at /var/tmp/pkgsrc/devel/SDL2/work/SDL2-2.0.14/src/render/opengl/SDL_r=
 ender_gl.c:1235
 #13 0x000071b0a0847635 in FlushRenderCommands (renderer=3Drenderer@entry=
 =3D0x71b0a3baaa00) at /var/tmp/pkgsrc/devel/SDL2/work/SDL2-2.0.14/src/rend=
 er/SDL_render.c:221
 #14 0x000071b0a084cb79 in SDL_RenderPresent_REAL (renderer=3D0x71b0a3baaa0=
 0) at /var/tmp/pkgsrc/devel/SDL2/work/SDL2-2.0.14/src/render/SDL_render.c:=
 3174
 #15 0x000000000041224c in video_display (is=3Dis@entry=3D0x71b0a18bf600) a=
 t fftools/ffplay.c:1372
 #16 0x0000000000413d20 in video_refresh (opaque=3Dopaque@entry=3D0x71b0a18=
 bf600, remaining_time=3Dremaining_time@entry=3D0x7f7fffe43868) at fftools/=
 ffplay.c:1689
 #17 0x0000000000414bd8 in refresh_loop_wait_event (event=3D0x7f7fffe43870,=
  is=3D0x71b0a18bf600) at fftools/ffplay.c:3245
 #18 event_loop (cur_stream=3D<optimized out>) at fftools/ffplay.c:3285
 #19 main (argc=3D<optimized out>, argv=3D<optimized out>) at fftools/ffpla=
 y.c:3776
 
 
 debugging optimized code: this cast is actually irb:
 
 (gdb) p/x  *((struct intel_renderbuffer *)rb)
 $18 =3D {Base =3D {Base =3D {Mutex =3D {ptm_magic =3D 0x33330003, ptm_erro=
 rcheck =3D 0x0,
         ptm_pad1 =3D {0x0, 0x0, 0x0}, {ptm_ceiling =3D 0x0, ptm_unused =3D=
  0x0}, ptm_pad2 =3D {
           0x0, 0x0, 0x0}, ptm_owner =3D 0x0, ptm_waiters =3D 0x0, ptm_recu=
 rsed =3D 0x0,
         ptm_spare2 =3D 0x0}, ClassID =3D 0x12345678, Name =3D 0x0, Label =
 =3D 0x0,
       RefCount =3D 0x1, Width =3D 0x0, Height =3D 0x0, Depth =3D 0x0, Purg=
 eable =3D 0x0,
       AttachedAnytime =3D 0x0, NeedsFinishRenderTexture =3D 0x0, NumSample=
 s =3D 0x0,
       NumStorageSamples =3D 0x0, InternalFormat =3D 0x1907, _BaseFormat =
 =3D 0x1907,
       Format =3D 0x6, TexImage =3D 0x0, Delete =3D 0x71b08a4fbb71,
       AllocStorage =3D 0x71b08a4fbb60}, Buffer =3D 0x0, Map =3D 0x0, RowSt=
 ride =3D 0x0,
     ColorType =3D 0x0}, mt =3D 0x0, singlesample_mt =3D 0x0, align_wa_mt =
 =3D 0x0,
   mt_level =3D 0x0, mt_layer =3D 0x0, layer_count =3D 0x1, draw_x =3D 0x0,=
  draw_y =3D 0x0,
   need_downsample =3D 0x1, need_map_upsample =3D 0x0, singlesample_mt_is_t=
 mp =3D 0x0,
   need_srgb =3D 0x0}
 
 
 unfortunately, irb->mt is 0x0 and so irb->mt->first_level seg-faults in li=
 ne 253:
 
       .base_level =3D irb->mt_level - irb->mt->first_level,
 
 Here I gave up. The actual problem is probably anway in
 
 ./external/mit/xf86-video-intel/dist/src/uxa/intel_batchbuffer.c
 
 [ 26933.347] (EE) intel(0): Failed to submit batch buffer, expect renderin=
 g corruption: Cannot allocate memory.
 
 for which I don't have any debugging info - that is very outlandish code.
 
 
 A little bit about my hardware
 
 # lspci -s  00:02.0
 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 510 (rev =
 06) (prog-if 00 [VGA controller])
 
 
 $ dmesg | egrep "drm|915|intelfb"
 [     1.053248] i915drmkms0 at pci0 dev 2 function 0: vendor 8086 product =
 1902 (rev. 0x06)
 [     5.098524] kern info: [drm] Memory usable by graphics device =3D 4096=
 M
 [     5.107554] kern info: [drm] Supports vblank timestamp caching Rev 2 (=
 21.10.2013).
 [     5.107554] kern info: [drm] Driver supports precise vblank timestamp =
 query.
 [     5.107554] kern info: [drm] failed to find VBIOS tables
 [     5.108524] i915drmkms0: interrupting at ioapic0 pin 16 (i915drmkms0)
 [     5.138522] kern info: [drm] failed to retrieve link info, disabling e=
 DP
 [     5.258522] intelfb0 at i915drmkms0
 [     5.258522] intelfb0: framebuffer at 0xffffd08066abc000, size 1920x108=
 0, depth 32, stride 7680
 [     5.308522] wsdisplay0 at intelfb0 kbdmux 1: console (default, vt100 e=
 mulation), using wskbd0
 [     6.188524] kern info: [drm] RC6 on
 
  Stefan
 


Home | Main Index | Thread Index | Old Index