Skip to content

Commit

Permalink
Prefer vt(4) for UEFI boot
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
emaste committed Jul 2, 2014
1 parent 39ab708 commit 9825a4c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 0 deletions.
8 changes: 8 additions & 0 deletions sys/amd64/amd64/machdep.c
Expand Up @@ -1954,6 +1954,14 @@ hammer_time(u_int64_t modulep, u_int64_t physfree)
*/
clock_init();

/*
* Use vt(4) by default for UEFI boot (during the sc(4)/vt(4)
* transition).
*/
if (preload_search_info(kmdp, MODINFO_METADATA | MODINFOMD_EFI_MAP) !=
NULL)
vty_set_preferred(VTY_VT);

/*
* Initialize the console before we print anything out.
*/
Expand Down
18 changes: 18 additions & 0 deletions sys/kern/kern_cons.c
Expand Up @@ -652,6 +652,7 @@ sysbeep(int pitch __unused, int period __unused)
/*
* 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 | CTLFLAG_NOFETCH, vty_name,
0, "Console vty driver");
Expand All @@ -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)
Expand All @@ -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 &= ~DEV_SC;
#endif
#if !defined(DEV_VT)
vty_prefer &= ~DEV_VT;
#endif
}

1 change: 1 addition & 0 deletions sys/sys/cons.h
Expand Up @@ -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 */

Expand Down

0 comments on commit 9825a4c

Please sign in to comment.