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

Tomoaki AOKI junchoon at dec.sakura.ne.jp
Sun Mar 15 21:49:59 UTC 2020


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