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