Re: git: 56970c3c4b0b - main - loader: Prefer comma-separated list of values for "console"

From: Michael Osipov <michaelo_at_FreeBSD.org>
Date: Thu, 29 Jan 2026 16:31:20 UTC
On 2026-01-29 17:22, Mark Millard wrote:
> On 1/29/26 00:45, Michael Osipov wrote:
>> The branch main has been updated by michaelo:
>>
>> URL: https://deu01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcgit.freebsd.org%2Fsrc%2Fcommit%2F%3Fid%3D56970c3c4b0bc61d972837661a31cc2b9e8e8d7c&data=05%7C02%7Cmichael.osipov%40innomotics.com%7C599792c98cac445815a108de5f529e81%7C698c6ffb74e34a84be68f22d8d3201a3%7C0%7C0%7C639053005625974477%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=PsvT9MHa5qWyE2CBQGLbDG30GT8AWpltNOu3JrYO%2BK4%3D&reserved=0
>>
>> 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://deu01.safelinks.protection.outlook.com/?url=https%3A%2F%2Freviews.freebsd.org%2FD54923&data=05%7C02%7Cmichael.osipov%40innomotics.com%7C599792c98cac445815a108de5f529e81%7C698c6ffb74e34a84be68f22d8d3201a3%7C0%7C0%7C639053005625994409%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=fqqWtXQep%2FyB%2BinUOiod%2FO%2BqDOOQ4UC5O4KzvM36C7Q%3D&reserved=0
>> ---
>>   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://deu01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcgit.freebsd.org%2Fsrc%2Fcommit%2Fstand%2Fefi%3Fid%3D2f131435bc22&data=05%7C02%7Cmichael.osipov%40innomotics.com%7C599792c98cac445815a108de5f529e81%7C698c6ffb74e34a84be68f22d8d3201a3%7C0%7C0%7C639053005626005673%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=b7UCUYk%2BJZ4wfJpjvdpv3zW7Vjuep0reJkcNgpl%2B3Gk%3D&reserved=0>
> 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://deu01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcgit.freebsd.org%2Fsrc%2Fcommit%2Fstand%2Fefi%3Fid%3Df93416d67743&data=05%7C02%7Cmichael.osipov%40innomotics.com%7C599792c98cac445815a108de5f529e81%7C698c6ffb74e34a84be68f22d8d3201a3%7C0%7C0%7C639053005626016462%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=%2BcXcfrBSDtWBYluSYlONTo%2FzYP761LUbk5mfxjQ3Brg%3D&reserved=0>
> 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.

Hi Mark,

thanks for raising. I do not fully understand the point you are trying 
to make. This change is a spinoff from 
https://reviews.freebsd.org/D54843 where we identified that comma is the 
preferred separator, but space is allowed as well. For consistency 
reasons I have updated everything to comma. I didn't change the actual 
values.

Can you clarify?

Michael