svn commit: r358989 - in head/stand/efi: libefi loader loader/arch/arm loader/arch/arm64

Toomas Soome tsoome at me.com
Mon Mar 16 06:27:04 UTC 2020


Hi!

This means, your system has UART serial device — you can check this from loader prompt: efi-show -g global -v ConOut or with efivar from running system. This would trigger efi console driver to use TERM_EMU, which can be turned off by user and doing that would cause ESC sequences to be passed directly to console. Might that be true in your case?

rgds,
toomas

> On 15. Mar 2020, at 17:17, Tomoaki AOKI <junchoon at dec.sakura.ne.jp> wrote:
> 
> Hi.
> 
> This broke loader menu display on efifb. At least on amd64.
> ESC sequences without ESC character are shown.
> Key input (at least 1, 2 and enter) works OK.
> I suspect outputs for SIO is sent to efifb and ESC codes are ignored.
> 
> Reverting this fixes the issue.
> 
> Not tried (not enough time for now as I'm mainly using stable/12),
> but possibly calling efi_cons_probe() from efi_cons_init() would be
> needed, as ome codes are moved from the latter to the former.
> 
> 
>> Author: tsoome
>> Date: Sat Mar 14 06:36:03 2020
>> New Revision: 358989
>> URL: https://svnweb.freebsd.org/changeset/base/358989
>> 
>> Log:
>>  loader: add comconsole implementation on top of SIO protocol
>> 
>>  Provide comconsole on top of SIO for arm platforms (x86 does use bios
> version).
>> 
>> Added:
>>  head/stand/efi/loader/efiserialio.c   (contents, props changed)
>> Modified:
>>  head/stand/efi/libefi/efi_console.c
>>  head/stand/efi/loader/arch/arm/Makefile.inc
>>  head/stand/efi/loader/arch/arm64/Makefile.inc
>>  head/stand/efi/loader/conf.c
>>  head/stand/efi/loader/main.c
>> 
>> Modified: head/stand/efi/libefi/efi_console.c
>> ==============================================================================
>> --- head/stand/efi/libefi/efi_console.c	Sat Mar 14 05:57:22
> 2020	(r358988)
>> +++ head/stand/efi/libefi/efi_console.c
> Sat Mar 14 06:36:03 2020	(r358989)
>> @@ -377,9 +377,22 @@ efi_cons_respond(void *s __unused, const void *buf __u
>> {
>> }
>> 
>> +/*
>> + * Set up conin/conout/coninex to make sure we have input ready.
>> + */
>> static void
>> efi_cons_probe(struct console *cp)
>> {
>> +	EFI_STATUS status;
>> +
>> +	conout = ST->ConOut;
>> +	conin = ST->ConIn;
>> +
>> +	status = BS->OpenProtocol(ST->ConsoleInHandle,
> &simple_input_ex_guid,
>> +	    (void **)&coninex, IH, NULL,
> EFI_OPEN_PROTOCOL_GET_PROTOCOL);
>> +	if (status != EFI_SUCCESS)
>> +		coninex = NULL;
>> +
>> 	cp->c_flags |= C_PRESENTIN | C_PRESENTOUT;
>> }
>> 
>> @@ -889,15 +902,7 @@ efi_cons_init(int arg)
>> 	if (conin != NULL)
>> 		return (0);
>> 
>> -	conout = ST->ConOut;
>> -	conin = ST->ConIn;
>> -
>> 	conout->EnableCursor(conout, TRUE);
>> -	status = BS->OpenProtocol(ST->ConsoleInHandle,
> &simple_input_ex_guid,
>> -	    (void **)&coninex, IH, NULL,
> EFI_OPEN_PROTOCOL_GET_PROTOCOL);
>> -	if (status != EFI_SUCCESS)
>> -		coninex = NULL;
>> -
>> 	if (efi_cons_update_mode())
>> 		return (0);
>> 
>> 
>> Modified: head/stand/efi/loader/arch/arm/Makefile.inc
>> ==============================================================================
>> --- head/stand/efi/loader/arch/arm/Makefile.inc	Sat Mar 14
> 05:57:22 2020	(r358988)
>> +++ head/stand/efi/loader/arch/arm/Makefile.inc	Sat Mar 14 06:36:03
> 2020	(r358989)
>> @@ -1,6 +1,7 @@
>> # $FreeBSD$
>> 
>> SRCS+=	exec.c \
>> +	efiserialio.c \
>> 	start.S
>> 
>> HAVE_FDT=yes
> 
> (Snip)
> 
>> @@ -930,7 +936,6 @@ main(int argc, CHAR16 *argv[])
>> 	if (!has_kbd && (howto & RB_PROBE))
>> 		howto |= RB_SERIAL | RB_MULTIPLE;
>> 	howto &= ~RB_PROBE;
>> -	uhowto = parse_uefi_con_out();
>> 
>> 	/*
>> 	 * Read additional environment variables from the boot device's
> 
> -- 
> Tomoaki AOKI    <junchoon at dec.sakura.ne.jp>



More information about the svn-src-head mailing list