svn commit: r270988 - in stable/10/sys: amd64/amd64 kern sys
Ed Maste
emaste at FreeBSD.org
Tue Sep 2 22:01:16 UTC 2014
Author: emaste
Date: Tue Sep 2 22:01:14 2014
New Revision: 270988
URL: http://svnweb.freebsd.org/changeset/base/270988
Log:
MFC automatic vt(4) selection for UEFI boot
r268158: Prefer vt(4) for UEFI boot
The UEFI framebuffer driver vt_efifb requires vt(4), so add a
mechanism for the startup routine to set the preferred console.
This change is ugly because console init happens very early in the
boot, making a cleaner interface difficult. This change is intended
only to facilitate the sc(4) / vt(4) transition, and can be reverted
once vt(4) is the default.
r268160: Fix typos in VTY constant names from r268158
r268982: Don't pass null kmdp to preload_search_info
On Xen PVH guests kmdp == NULL.
Sponsored by: The FreeBSD Foundation
Modified:
stable/10/sys/amd64/amd64/machdep.c
stable/10/sys/kern/kern_cons.c
stable/10/sys/sys/cons.h
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/amd64/amd64/machdep.c
==============================================================================
--- stable/10/sys/amd64/amd64/machdep.c Tue Sep 2 21:59:24 2014 (r270987)
+++ stable/10/sys/amd64/amd64/machdep.c Tue Sep 2 22:01:14 2014 (r270988)
@@ -1909,6 +1909,14 @@ hammer_time(u_int64_t modulep, u_int64_t
i8254_init();
/*
+ * Use vt(4) by default for UEFI boot (during the sc(4)/vt(4)
+ * transition).
+ */
+ if (kmdp != NULL && preload_search_info(kmdp,
+ MODINFO_METADATA | MODINFOMD_EFI_MAP) != NULL)
+ vty_set_preferred(VTY_VT);
+
+ /*
* Initialize the console before we print anything out.
*/
cninit();
Modified: stable/10/sys/kern/kern_cons.c
==============================================================================
--- stable/10/sys/kern/kern_cons.c Tue Sep 2 21:59:24 2014 (r270987)
+++ stable/10/sys/kern/kern_cons.c Tue Sep 2 22:01:14 2014 (r270988)
@@ -652,6 +652,7 @@ sysbeep(int pitch __unused, int period _
/*
* Temporary support for sc(4) to vt(4) transition.
*/
+static unsigned vty_prefer;
static char vty_name[16];
SYSCTL_STRING(_kern, OID_AUTO, vty, CTLFLAG_RDTUN, vty_name, 0,
"Console vty driver");
@@ -676,6 +677,10 @@ vty_enabled(unsigned vty)
break;
}
#endif
+ if (vty_prefer != 0) {
+ vty_selected = vty_prefer;
+ break;
+ }
#if defined(DEV_SC)
vty_selected = VTY_SC;
#elif defined(DEV_VT)
@@ -691,3 +696,16 @@ vty_enabled(unsigned vty)
return ((vty_selected & vty) != 0);
}
+void
+vty_set_preferred(unsigned vty)
+{
+
+ vty_prefer = vty;
+#if !defined(DEV_SC)
+ vty_prefer &= ~VTY_SC;
+#endif
+#if !defined(DEV_VT)
+ vty_prefer &= ~VTY_VT;
+#endif
+}
+
Modified: stable/10/sys/sys/cons.h
==============================================================================
--- stable/10/sys/sys/cons.h Tue Sep 2 21:59:24 2014 (r270987)
+++ stable/10/sys/sys/cons.h Tue Sep 2 22:01:14 2014 (r270988)
@@ -137,6 +137,7 @@ void constty_clear(void);
#define VTY_SC 0x01
#define VTY_VT 0x02
int vty_enabled(unsigned int);
+void vty_set_preferred(unsigned int);
#endif /* _KERNEL */
More information about the svn-src-stable-10
mailing list