aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2024-02-04 21:09:48 +0000
committerWarner Losh <imp@FreeBSD.org>2024-02-07 00:09:46 +0000
commit20a6f4779ac6108716a81d383a79a161ae41d48c (patch)
treed1450fe6b3d139885fbb39fe96712eec1e6bfa1a
parenta8aa5ba3db694f97d21e946d6392c527af31f05b (diff)
downloadsrc-20a6f4779ac6108716a81d383a79a161ae41d48c.tar.gz
src-20a6f4779ac6108716a81d383a79a161ae41d48c.zip
loader: For EFI, if we don't have ConOut, try ConIn
Try ConIn if we don't have a ConOut variable. ConIn will contain HID devices and/or serial devices. We currently just search for serial devices and will use them instead of video with the current code. While ConIn w/o ConOut is fairly common on laptops, is kinda rare on servers. Some refinement may be needed in the future if servers come to light. This is also minimal to allow possible integration into 13.3 release. MFC After: 1 week Sponsored by: Netflix Reviewed by: dab, tsoome Differential Revision: https://reviews.freebsd.org/D43714 (cherry picked from commit 064fa628ce375028f2510182f4edbafa7f469ecb)
-rw-r--r--stand/efi/loader/main.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c
index 39e32a56adc0..123410f83aa0 100644
--- a/stand/efi/loader/main.c
+++ b/stand/efi/loader/main.c
@@ -716,7 +716,10 @@ setenv_int(const char *key, int val)
* Parse ConOut (the list of consoles active) and see if we can find a
* serial port and/or a video port. It would be nice to also walk the
* ACPI name space to map the UID for the serial port to a port. The
- * latter is especially hard.
+ * latter is especially hard. Also check for ConIn as well. This will
+ * be enough to determine if we have serial, and if we don't, we default
+ * to video. If there's a dual-console situation with ConIn, this will
+ * currently fail.
*/
int
parse_uefi_con_out(void)
@@ -735,6 +738,8 @@ parse_uefi_con_out(void)
rv = efi_global_getenv("ConOut", buf, &sz);
if (rv != EFI_SUCCESS)
rv = efi_global_getenv("ConOutDev", buf, &sz);
+ if (rv != EFI_SUCCESS)
+ rv = efi_global_getenv("ConIn", buf, &sz);
if (rv != EFI_SUCCESS) {
/*
* If we don't have any ConOut default to both. If we have GOP