Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Sep 2014 22:01:15 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r270988 - in stable/10/sys: amd64/amd64 kern sys
Message-ID:  <201409022201.s82M1F4e087482@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 */
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409022201.s82M1F4e087482>