svn commit: r336464 - head/stand/efi/loader
Warner Losh
imp at FreeBSD.org
Wed Jul 18 22:45:46 UTC 2018
Author: imp
Date: Wed Jul 18 22:45:45 2018
New Revision: 336464
URL: https://svnweb.freebsd.org/changeset/base/336464
Log:
If the console is already set, don't override it.
If console=X is specified on the command line, it's effectively
overridden by the current code. It shouldn't do that.
Modified:
head/stand/efi/loader/main.c
Modified: head/stand/efi/loader/main.c
==============================================================================
--- head/stand/efi/loader/main.c Wed Jul 18 22:45:26 2018 (r336463)
+++ head/stand/efi/loader/main.c Wed Jul 18 22:45:45 2018 (r336464)
@@ -567,7 +567,6 @@ main(int argc, CHAR16 *argv[])
* eg. the boot device, which we can't do yet. We can use
* printf() etc. once this is done.
*/
- setenv("console", "efi", 1);
cons_probe();
/*
@@ -579,49 +578,49 @@ main(int argc, CHAR16 *argv[])
if (!has_kbd && (howto & RB_PROBE))
howto |= RB_SERIAL | RB_MULTIPLE;
howto &= ~RB_PROBE;
-
uhowto = parse_uefi_con_out();
/*
* We now have two notions of console. howto should be viewed as
- * overrides.
+ * overrides. If console is already set, don't set it again.
*/
#define VIDEO_ONLY 0
#define SERIAL_ONLY RB_SERIAL
#define VID_SER_BOTH RB_MULTIPLE
#define SER_VID_BOTH (RB_SERIAL | RB_MULTIPLE)
#define CON_MASK (RB_SERIAL | RB_MULTIPLE)
-
- if ((howto & CON_MASK) == 0) {
- /* No override, uhowto is controlling and efi cons is perfect */
- howto = howto | (uhowto & CON_MASK);
- setenv("console", "efi", 1);
- } else if ((howto & CON_MASK) == (uhowto & CON_MASK)) {
- /* override matches what UEFI told us, efi console is perfect */
- setenv("console", "efi", 1);
- } else if ((uhowto & (CON_MASK)) != 0) {
- /*
- * We detected a serial console on ConOut. All possible
- * overrides include serial. We can't really override what efi
- * gives us, so we use it knowing it's the best choice.
- */
- setenv("console", "efi", 1);
- } else {
- /*
- * We detected some kind of serial in the override, but ConOut
- * has no serial, so we have to sort out which case it really is.
- */
- switch (howto & CON_MASK) {
- case SERIAL_ONLY:
- setenv("console", "comconsole", 1);
- break;
- case VID_SER_BOTH:
- setenv("console", "efi comconsole", 1);
- break;
- case SER_VID_BOTH:
- setenv("console", "comconsole efi", 1);
- break;
- /* case VIDEO_ONLY can't happen -- it's the first if above */
+ if (getenv("console") == NULL) {
+ if ((howto & CON_MASK) == 0) {
+ /* No override, uhowto is controlling and efi cons is perfect */
+ howto = howto | (uhowto & CON_MASK);
+ setenv("console", "efi", 1);
+ } else if ((howto & CON_MASK) == (uhowto & CON_MASK)) {
+ /* override matches what UEFI told us, efi console is perfect */
+ setenv("console", "efi", 1);
+ } else if ((uhowto & (CON_MASK)) != 0) {
+ /*
+ * We detected a serial console on ConOut. All possible
+ * overrides include serial. We can't really override what efi
+ * gives us, so we use it knowing it's the best choice.
+ */
+ setenv("console", "efi", 1);
+ } else {
+ /*
+ * We detected some kind of serial in the override, but ConOut
+ * has no serial, so we have to sort out which case it really is.
+ */
+ switch (howto & CON_MASK) {
+ case SERIAL_ONLY:
+ setenv("console", "comconsole", 1);
+ break;
+ case VID_SER_BOTH:
+ setenv("console", "efi comconsole", 1);
+ break;
+ case SER_VID_BOTH:
+ setenv("console", "comconsole efi", 1);
+ break;
+ /* case VIDEO_ONLY can't happen -- it's the first if above */
+ }
}
}
/*
More information about the svn-src-all
mailing list