FreeBSDDesktop / DEPRECATED-freebsd-base-graphics

Fork of FreeBSD's base repository to work on graphics-stack-related projects
Other
49 stars 13 forks source link

Panic on unloading/reloading i915kms #141

Closed nomadlogic closed 6 years ago

nomadlogic commented 7 years ago

I've been running 5e740d3cd8d for a while on a kabylake system with pretty good success. I recently started getting some screen corruption after several days of uptime. I attempted to exit X, unload the i915kms module and reload it. the first time worked, then i unloaded it again to verify all of the DRM modules were in fact unloaded. they were - at which point i re-inserted the i915kms module which triggered the following panic:

panic: _mtx_lock_sleep: recursed on non-recursive mutex v/drm/drm_irq.c:367-lnxspin @ /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/drm_irq.c:1150

here's the full panic and trace:

overhead dumped core - see /var/crash/vmcore.2

Mon Apr 24 16:42:32 PDT 2017

FreeBSD overhead 12.0-CURRENT FreeBSD 12.0-CURRENT #1 5e740d3cd8d(drm-next): Mon Apr 17 10:44:48 PDT 2017     pwright@overhead:/usr/obj/usr/home/pwright/git/freebsd-base-graphics/sys/GENERIC  amd64

panic: _mtx_lock_sleep: recursed on non-recursive mutex v/drm/drm_irq.c:367-lnxspin @ /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/drm_irq.c:1150

GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...

Unread portion of the kernel message buffer:
[drm:drm_atomic_state_init] Allocated atomic state 0xfffff802146b4000
[drm:drm_mode_object_reference] OBJ ID: 55 (3)
[drm:drm_atomic_get_plane_state] Added [PLANE:23:plane 1A] 0xfffff80133fc8500 state to 0xfffff802146b4000
[drm:drm_mode_object_reference] OBJ ID: 59 (1)
[drm:drm_mode_object_reference] OBJ ID: 57 (1)
[drm:drm_atomic_get_crtc_state] Added [CRTC:26:pipe A] 0xfffff80173ce7800 state to 0xfffff802146b4000
[drm:drm_atomic_get_plane_state] Added [PLANE:25:cursor A] 0xfffff80006c35d00 state to 0xfffff802146b4000
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff80006c35d00 to [NOCRTC]
[drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state 0xfffff80006c35d00
[drm:drm_atomic_get_plane_state] Added [PLANE:27:plane 2A] 0xfffff80004ed8500 state to 0xfffff802146b4000
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff80004ed8500 to [NOCRTC]
[drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state 0xfffff80004ed8500
[drm:drm_atomic_get_plane_state] Added [PLANE:28:plane 1B] 0xfffff8019e809500 state to 0xfffff802146b4000
[drm:drm_atomic_get_plane_state] Added [PLANE:29:cursor B] 0xfffff801dbfc1200 state to 0xfffff802146b4000
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff801dbfc1200 to [NOCRTC]
[drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state 0xfffff801dbfc1200
[drm:drm_atomic_get_plane_state] Added [PLANE:31:plane 2B] 0xfffff8019e80a500 state to 0xfffff802146b4000
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff8019e80a500 to [NOCRTC]
[drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state 0xfffff8019e80a500
[drm:drm_atomic_get_plane_state] Added [PLANE:32:plane 1C] 0xfffff8004d2d2400 state to 0xfffff802146b4000
[drm:drm_atomic_get_plane_state] Added [PLANE:33:cursor C] 0xfffff8004d2d2100 state to 0xfffff802146b4000
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff8004d2d2100 to [NOCRTC]
[drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state 0xfffff8004d2d2100
[drm:drm_atomic_get_plane_state] Added [PLANE:35:plane 2C] 0xfffff8019e807000 state to 0xfffff802146b4000
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff8019e807000 to [NOCRTC]
[drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state 0xfffff8019e807000
[drm:drm_mode_object_unreference] OBJ ID: 59 (2)
[drm:drm_atomic_set_mode_for_crtc] Set [MODE:1920x1080] for CRTC state 0xfffff80173ce7800
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff80133fc8500 to [CRTC:26:pipe A]
[drm:drm_mode_object_unreference] OBJ ID: 55 (4)
[drm:drm_mode_object_reference] OBJ ID: 55 (3)
[drm:drm_atomic_set_fb_for_plane] Set [FB:55] for plane state 0xfffff80133fc8500
[drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:26:pipe A] to 0xfffff802146b4000
[drm:drm_mode_object_reference] OBJ ID: 37 (4)
[drm:drm_mode_object_reference] OBJ ID: 37 (5)
[drm:drm_atomic_get_connector_state] Added [CONNECTOR:37] 0xfffff8000a4873e0 state to 0xfffff802146b4000
[drm:drm_mode_object_unreference] OBJ ID: 37 (6)
[drm:drm_atomic_set_crtc_for_connector] Link connector state 0xfffff8000a4873e0 to [NOCRTC]
[drm:drm_mode_object_reference] OBJ ID: 37 (5)
[drm:drm_atomic_set_crtc_for_connector] Link connector state 0xfffff8000a4873e0 to [CRTC:26:pipe A]
[drm:drm_mode_object_reference] OBJ ID: 58 (1)
[drm:drm_atomic_get_crtc_state] Added [CRTC:30:pipe B] 0xfffff801f3d83000 state to 0xfffff802146b4000
[drm:drm_atomic_set_mode_for_crtc] Set [NOMODE] for CRTC state 0xfffff801f3d83000
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff8019e809500 to [NOCRTC]
[drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state 0xfffff8019e809500
[drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:pipe B] to 0xfffff802146b4000
[drm:drm_atomic_get_crtc_state] Added [CRTC:34:pipe C] 0xfffff80004a1b800 state to 0xfffff802146b4000
[drm:drm_atomic_set_mode_for_crtc] Set [NOMODE] for CRTC state 0xfffff80004a1b800
[drm:drm_atomic_set_crtc_for_plane] Link plane state 0xfffff8004d2d2400 to [NOCRTC]
[drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state 0xfffff8004d2d2400
[drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:34:pipe C] to 0xfffff802146b4000
[drm:drm_atomic_check_only] checking 0xfffff802146b4000
[drm:update_connector_routing] Updating routing for [CONNECTOR:37:eDP-1]
[drm:update_connector_routing] [CONNECTOR:37:eDP-1] keeps [ENCODER:36:DDI A], now on [CRTC:26:pipe A]
[drm:skl_update_scaler_plane] Updating scaler for [PLANE:23:plane 1A] scaler_user index 0.0
[drm:intel_plane_atomic_calc_changes] [CRTC:26:pipe A] has [PLANE:23:plane 1A] with fb 55
[drm:intel_plane_atomic_calc_changes] [PLANE:23:plane 1A] visible 1 -> 1, off 0, on 0, ms 0
[drm:drm_atomic_commit] commiting 0xfffff802146b4000
[drm:intel_fbc_alloc_cfb] reserved 16588800 bytes of contiguous stolen space for FBC, threshold: 1
[drm:intel_fbc_enable] Enabling FBC on pipe A

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x0
fault code              = supervisor read instruction, page not present
instruction pointer     = 0x20:0x0
stack pointer           = 0x28:0xfffffe02dca89428
frame pointer           = 0x28:0xfffffe02dca89480
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 0 (thread taskq)

#0  doadump (textdump=1) at pcpu.h:232
232     pcpu.h: No such file or directory.
        in pcpu.h
(kgdb) #0  doadump (textdump=1) at pcpu.h:232
#1  0xffffffff80a52895 in kern_reboot (howto=260)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/kern/kern_shutdown.c:386
#2  0xffffffff80a52e86 in vpanic (fmt=<value optimized out>, 
    ap=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/kern/kern_shutdown.c:787
#3  0xffffffff80a52ca6 in kassert_panic (fmt=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/kern/kern_shutdown.c:669
#4  0xffffffff80a3284c in __mtx_lock_sleep (c=0xfffffe00080f4200, 
    v=18446735277698983200, tid=18446735277698983200, 
    opts=<value optimized out>, file=<value optimized out>, 
    line=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/kern/kern_mutex.c:489
#5  0xffffffff80a32388 in __mtx_lock_flags (c=0xfffffe00080f4200, 
    opts=<value optimized out>, file=<value optimized out>, 
    line=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/kern/kern_mutex.c:250
#6  0xffffffff82f74084 in drm_vblank_get (dev=0xfffffe00080f4000, pipe=0)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/drm_irq.c:1150
#7  0xffffffff82edb3ab in intel_pipe_update_start (crtc=0xfffff8000a98a000)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/i915/intel_sprite.c:103
#8  0xffffffff82e85cd1 in intel_begin_crtc_commit (crtc=0xfffff8000a98a000, 
    old_crtc_state=0xfffff80173ce7800)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/i915/intel_display.c:14869
#9  0xffffffff82f46f13 in drm_atomic_helper_commit_planes_on_crtc (
    old_crtc_state=0xfffff80173ce7800)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/drm_atomic_helper.c:1854
#10 0xffffffff82e7bcc1 in intel_update_crtc (crtc=0xfffff8000a98a000, 
    state=0xfffff80109568000, old_crtc_state=0xfffff80173ce7800, 
    crtc_vblank_mask=0xfffffe02dca88e08)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/i915/intel_display.c:14242
#11 0xffffffff82e748e4 in skl_update_crtcs (state=<value optimized out>, 
    crtc_vblank_mask=0xfffffe02dca88e08) at drm_crtc.h:1359
#12 0xffffffff82e80e7c in intel_atomic_commit_tail (
    state=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/i915/intel_display.c:14436
#13 0xffffffff82e7dc89 in intel_atomic_commit (dev=<value optimized out>, 
    state=<value optimized out>, nonblock=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/i915/intel_display.c:14573
#14 0xffffffff82f67bab in drm_fb_helper_restore_fbdev_mode_unlocked (
    fb_helper=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/drm_fb_helper.c:369
#15 0xffffffff82f88fe9 in vt_kms_postswitch (arg=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/drm/linux_fb.c:84
#16 0xffffffff808dc49b in vt_window_switch (vw=0xffffffff81789348)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/vt/vt_core.c:540
#17 0xffffffff808d9cc0 in vtterm_cngrab (tm=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/dev/vt/vt_core.c:1467
#18 0xffffffff809f5972 in cngrab ()
    at /usr/home/pwright/git/freebsd-base-graphics/sys/kern/kern_cons.c:368
#19 0xffffffff80a94de9 in kdb_trap (type=12, code=0, tf=<value optimized out>)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/kern/subr_kdb.c:651
#20 0xffffffff80ed2582 in trap_fatal (frame=0xfffffe02dca89360, eva=0)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/amd64/amd64/trap.c:796
#21 0xffffffff80ed2632 in trap_pfault (frame=0xfffffe02dca89360, usermode=0)
    at pcpu.h:232
#22 0xffffffff80ed1dce in trap (frame=0xfffffe02dca89360)
    at /usr/home/pwright/git/freebsd-base-graphics/sys/amd64/amd64/trap.c:421
#23 0xffffffff80eb4611 in calltrap ()
    at /usr/home/pwright/git/freebsd-base-graphics/sys/amd64/amd64/exception.S:236
#24 0x0000000000000000 in ?? ()
Current language:  auto; currently minimal
(kgdb)