From owner-freebsd-current@freebsd.org Mon Aug 15 13:55:43 2016 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6E017BBB14B for ; Mon, 15 Aug 2016 13:55:43 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citapm.icyb.net.ua (citapm.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 9C72417D3; Mon, 15 Aug 2016 13:55:42 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citapm.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id QAA01431; Mon, 15 Aug 2016 16:55:35 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1bZIMZ-000FDJ-0S; Mon, 15 Aug 2016 16:55:35 +0300 To: FreeBSD Current From: Andriy Gapon Subject: vtterm_cngrab + kms does too much to be useful Message-ID: <38e7df4e-cf2c-cfec-2349-9d9ce5226359@FreeBSD.org> Date: Mon, 15 Aug 2016 16:54:33 +0300 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Aug 2016 13:55:43 -0000 Here is an example: NMI ISA 2c, EISA ff NMI ... going to debugger panic: malloc: called with spinlock or critical section held (kgdb) bt #0 doadump (textdump=1) at /usr/src/sys/kern/kern_shutdown.c:297 #1 0xffffffff8063c33f in kern_reboot (howto=) at /usr/src/sys/kern/kern_shutdown.c:365 #2 0xffffffff8063c988 in vpanic (fmt=, ap=0xfffffe03e218cac0) at /usr/src/sys/kern/kern_shutdown.c:641 #3 0xffffffff8063c693 in panic (fmt=) at /usr/src/sys/kern/kern_shutdown.c:574 #4 0xffffffff8061abaa in malloc (size=5136, mtp=0xffffffff821b2810 , flags=257) at /usr/src/sys/kern/kern_malloc.c:475 #5 0xffffffff821849ea in drm_crtc_helper_set_config (set=0xfffff800282b4a00) at /usr/src/sys/modules/drm2/drm2/../../../dev/drm2/drm_crtc_helper.c:596 #6 0xffffffff8218a03e in drm_fb_helper_restore_fbdev_mode (fb_helper=) at /usr/src/sys/modules/drm2/drm2/../../../dev/drm2/drm_fb_helper.c:344 #7 0xffffffff82189efc in vt_kms_postswitch (arg=) at /usr/src/sys/modules/drm2/drm2/../../../dev/drm2/drm_fb_helper.c:80 #8 0xffffffff805237ba in vt_fb_postswitch (vd=) at /usr/src/sys/dev/vt/hw/fb/vt_fb.c:385 #9 0xffffffff805290fd in vt_window_switch (vw=0xffffffff80c4e4c0 ) at /usr/src/sys/dev/vt/vt_core.c:540 #10 0xffffffff80527410 in vtterm_cngrab (tm=) at /usr/src/sys/dev/vt/vt_core.c:1465 #11 0xffffffff806868fe in termcn_cngrab (cp=) at /usr/src/sys/kern/subr_terminal.c:488 #12 0xffffffff805e8ef2 in cngrab () at /usr/src/sys/kern/kern_cons.c:368 #13 0xffffffff8067399e in kdb_trap (type=19, code=0, tf=0xfffffe03e218cf30) at /usr/src/sys/kern/subr_kdb.c:650 #14 0xffffffff8083e2bc in trap (frame=0xfffffe03e218cf30) at /usr/src/sys/amd64/amd64/trap.c:389 I do not have any solution for this. It's certainly nice to be able to switch to console when kdb becomes active. But the code that does switching should be prepared to work in the rather restrictive context. Which the kms code is not. P.S. It seems that the latest version of drm_fb_helper.c in Linux is quite different from what we have. -- Andriy Gapon