vt: call driver's postswitch when panicking on ttyv0

In vt_kms, the postswitch callback restores fbdev mode when
panicking or entering the debugger. This ensures that even when
a graphical applicatino was running on the first tty, simple framebuffer
mode would be restored and the panic would be visible instead
of the frozen GUI. But vt wouldn't call the postswitch callback
when we're already on the first tty, so running a GUI on it
would prevent you from reading any panics.

Reviewed by:	tsoome
MFC after:	2 weeks
Differential Revision: https://reviews.freebsd.org/D29961
This commit is contained in:
Greg V 2021-04-24 14:53:34 +03:00 committed by Toomas Soome
parent 9e0c051249
commit c937a405bd

View File

@ -594,7 +594,13 @@ vt_window_switch(struct vt_window *vw)
VT_LOCK(vd);
if (curvw == vw) {
/* Nothing to do. */
/*
* Nothing to do, except ensure the driver has the opportunity to
* switch to console mode when panicking, making sure the panic
* is readable (even when a GUI was using ttyv0).
*/
if ((kdb_active || panicstr) && vd->vd_driver->vd_postswitch)
vd->vd_driver->vd_postswitch(vd);
VT_UNLOCK(vd);
return (0);
}