[Bug 213334] vtterm_cngrab is broken on kms-enabled systems

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Oct 9 10:35:01 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213334

            Bug ID: 213334
           Summary: vtterm_cngrab is broken on kms-enabled systems
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: avg at FreeBSD.org

This stack trace tells it all:
(kgdb) bt
#0  doadump (textdump=1) at pcpu.h:222
#1  0xffffffff80a424a5 in kern_reboot (howto=<value optimized out>) at
/usr/src/sys/kern/kern_shutdown.c:366
#2  0xffffffff80a42a7b in vpanic (fmt=<value optimized out>, ap=<value
optimized out>) at /usr/src/sys/kern/kern_shutdown.c:759
#3  0xffffffff80a428b6 in kassert_panic (fmt=<value optimized out>) at
/usr/src/sys/kern/kern_shutdown.c:649
#4  0xffffffff80a1f4ae in malloc (size=1712, mtp=0xffffffff8309c6a0, flags=257)
at /usr/src/sys/kern/kern_malloc.c:475
#5  0xffffffff8306b71a in drm_crtc_helper_set_config (set=<value optimized
out>) at /usr/src/sys/modules/drm2/drm2/../../../dev/drm2/drm_crtc_helper.c:596
#6  0xffffffff83071fae in vt_kms_postswitch (arg=<value optimized out>) at
/usr/src/sys/modules/drm2/drm2/../../../dev/drm2/drm_fb_helper.c:344
#7  0xffffffff808d4b5b in vt_window_switch (vw=0xffffffff818e1400) at
/usr/src/sys/dev/vt/vt_core.c:540
#8  0xffffffff808d2620 in vtterm_cngrab (tm=<value optimized out>) at
/usr/src/sys/dev/vt/vt_core.c:1465
#9  0xffffffff809e8872 in cngrab () at /usr/src/sys/kern/kern_cons.c:368
#10 0xffffffff80a841e9 in kdb_trap (type=<value optimized out>, code=<value
optimized out>, tf=<value optimized out>) at /usr/src/sys/kern/subr_kdb.c:651
#11 0xffffffff81003732 in nmi_call_kdb (cpu=0, type=19, code=<value optimized
out>, frame=0xffffffff81d73d50, do_panic=false) at
/usr/src/sys/x86/x86/cpu_machdep.c:547
#12 0xffffffff8100f32f in nmi_call_kdb_smp (type=0, code=0, frame=0x0,
do_panic=<value optimized out>) at /usr/src/sys/x86/x86/mp_x86.c:1228
#13 0xffffffff8100375c in nmi_handle_intr (type=0, code=0, frame=0x0,
panic=<value optimized out>) at /usr/src/sys/x86/x86/cpu_machdep.c:564
#14 0xffffffff80eb57f6 in trap (frame=0xffffffff81d73d50) at
/usr/src/sys/amd64/amd64/trap.c:547
#15 0xffffffff80e96603 in nmi_calltrap () at
/usr/src/sys/amd64/amd64/exception.S:510
#16 0xffffffff81003216 in acpi_cpu_c1 () at
/usr/src/sys/x86/x86/cpu_machdep.c:130
Previous frame inner to this frame (corrupt stack?)

cngrab() can be called from all kinds of contexts and it should be able to
handle that.
Unfortunately, if a KMS-enabled graphics driver is used, then
vt_kms_postswitch() calls drm code that can only work in an unrestricted
context.  It can not work in an interrupt (including NMI context).

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list