Re: git: 56970c3c4b0b - main - loader: Prefer comma-separated list of values for "console"
Date: Thu, 29 Jan 2026 16:22:25 UTC
On 1/29/26 00:45, Michael Osipov wrote:
> The branch main has been updated by michaelo:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=56970c3c4b0bc61d972837661a31cc2b9e8e8d7c
>
> commit 56970c3c4b0bc61d972837661a31cc2b9e8e8d7c
> Author: Michael Osipov <michaelo@FreeBSD.org>
> AuthorDate: 2026-01-28 09:02:33 +0000
> Commit: Michael Osipov <michaelo@FreeBSD.org>
> CommitDate: 2026-01-29 08:44:45 +0000
>
> loader: Prefer comma-separated list of values for "console"
>
> PR: 292595
> Reviewed by: imp
> MFC after: 1 week
> Differential Revision: https://reviews.freebsd.org/D54923
> ---
> release/tools/azure.conf | 2 +-
> release/tools/openstack.conf | 2 +-
> stand/efi/loader/main.c | 4 ++--
> stand/i386/loader/main.c | 4 ++--
> 4 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/release/tools/azure.conf b/release/tools/azure.conf
> index 981e40566a1c..4fa6ba4d924d 100644
> --- a/release/tools/azure.conf
> +++ b/release/tools/azure.conf
> @@ -59,7 +59,7 @@ autoboot_delay="-1"
> beastie_disable="YES"
> loader_logo="none"
> hw.memtest.tests="0"
> -console="comconsole efi vidconsole"
> +console="comconsole,efi,vidconsole"
> comconsole_speed="115200"
> boot_multicons="YES"
> boot_serial="YES"
> diff --git a/release/tools/openstack.conf b/release/tools/openstack.conf
> index 9ce65a75c3c5..6cfb02bab9af 100644
> --- a/release/tools/openstack.conf
> +++ b/release/tools/openstack.conf
> @@ -33,7 +33,7 @@ vm_extra_pre_umount() {
> echo 'autoboot_delay="-1"' >> ${DESTDIR}/boot/loader.conf
> echo 'beastie_disable="YES"' >> ${DESTDIR}/boot/loader.conf
> echo 'boot_multicons="YES"' >> ${DESTDIR}/boot/loader.conf
> - echo 'console="comconsole vidconsole"' >> ${DESTDIR}/boot/loader.conf
> + echo 'console="comconsole,vidconsole"' >> ${DESTDIR}/boot/loader.conf
> echo 'comconsole_speed="115200"' >> ${DESTDIR}/boot/loader.conf
>
> # Reboot quickly, Don't wait at the panic screen
> diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c
> index 22dbd10a0f37..7ff2cf188509 100644
> --- a/stand/efi/loader/main.c
> +++ b/stand/efi/loader/main.c
> @@ -1316,10 +1316,10 @@ main(int argc, CHAR16 *argv[])
> setenv("console", "comconsole", 1);
> break;
> case VID_SER_BOTH:
> - setenv("console", "efi comconsole", 1);
> + setenv("console", "efi,comconsole", 1);
> break;
> case SER_VID_BOTH:
> - setenv("console", "comconsole efi", 1);
> + setenv("console", "comconsole,efi", 1);
> break;
> /* case VIDEO_ONLY can't happen -- it's the first if above */
> }
[Note: I CC'd Warner just because I'm not sure anyone else knows for
sure about this area's complicated history and issues.]
This looks possibly wrong to me for efi for all but amd64 --but for the
references to comconsole, not the space vs. comma issue.
stand: efi create eficom console device.
(2023-05-11)
QUOTE of <https://cgit.freebsd.org/src/commit/stand/efi?id=2f131435bc22>
console=comconsole talks to the hardware directly. This is available
only on amd64. It is not available anywhere else (and so requires
changes for people doing comconsole on aarch64)
console=eficom talks to the console via EFI protocols. It's available
on amd64, aarch64 and riscv64. It's the first port that we find, though
it can be overriden by efi_com_port (which should be set to the UID of
the serial port, not the I/O port, despite the name). devinfo -v
will give the UID to uartX mapping.
This is an incompatible change for HYPER-V on amd64. It only works with
eficom console, so you'll need to change your configuration in
loader.conf. No compatibility hack will ever be provided for this (since
it requires renamig, which the loader cannot reliably do).
It's also an incompatible change for aarch64. comconsole will need to
change to eficom. There might be a comconsole "shim" for this.
END QUOTE
stand: add comconsole backwards compatibility shim for aarch64
(2023-05-11)
QUOTE of <https://cgit.freebsd.org/src/commit/stand/efi?id=f93416d67743>
Add a compat shim for the "comconsole" name so that people with a
"console=comconsole" in their loader.conf on aarch64 will continue to
work (though with a warning).
This is only aarch64: it will never be there for amd64 (where comconsole
always means talk to the hardware directly). To do that is too hard.
END QUOTE
But that last (f93416d67743) is only for:
+#if defined(__aarch64__) && __FreeBSD_version < 1500000
+/* Hack for backward compatibility -- but only for a while */
+extern struct console comconsole;
+#endif
. . .
+#if defined(__aarch64__) && __FreeBSD_version < 1500000
+ &comconsole,
+#endif
. . . (and so on) . . .
So, as of FreeBSD 15+, aarch64 does not have comconsole as far as I can
tell.
It looks to me like for FreeBSD 15+ eficom should be referenced mostly,
instead of comconsole, comconsole being only for amd64.
For FreeBSD 14.3+ and stable/14 it may be that comconsole should be used
for amd64 and aarch64. (stable/13 does not have the commits at all.)
There is also a prior:
if (efi_has_gop())
how |= RB_MULTIPLE;
else
how |= RB_MULTIPLE | RB_SERIAL;
setenv("console", "efi,comconsole", 1);
and:
#if defined(__riscv)
/*
* This workaround likely is papering over a real issue
*/
if ((uhowto & RB_SERIAL) != 0)
setenv("console", "comconsole", 1);
#endif
that may well both be wrong for stand/efi/loader/main.c too.
> diff --git a/stand/i386/loader/main.c b/stand/i386/loader/main.c
> index a70b3a253b90..7538c6d4fb3f 100644
> --- a/stand/i386/loader/main.c
> +++ b/stand/i386/loader/main.c
> @@ -162,9 +162,9 @@ main(void)
> bi_setboothowto(initial_howto);
> if (initial_howto & RB_MULTIPLE) {
> if (initial_howto & RB_SERIAL)
> - setenv("console", "comconsole vidconsole", 1);
> + setenv("console", "comconsole,vidconsole", 1);
> else
> - setenv("console", "vidconsole comconsole", 1);
> + setenv("console", "vidconsole,comconsole", 1);
> } else if (initial_howto & RB_SERIAL) {
> setenv("console", "comconsole", 1);
> } else if (initial_howto & RB_MUTE) {
>
>
--
===
Mark Millard
marklmi at yahoo.com