Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Mar 2020 08:26:56 +0200
From:      Toomas Soome <tsoome@me.com>
To:        junchoon@dec.sakura.ne.jp
Cc:        svn-src-head@freebsd.org, "tsoome@freebsd.org" <tsoome@FreeBSD.org>
Subject:   Re: svn commit: r358989 - in head/stand/efi: libefi loader loader/arch/arm loader/arch/arm64
Message-ID:  <746EE981-536F-49AD-9B76-F9F103ECB1F9@me.com>
In-Reply-To: <20200316001745.07df62f72d647b924b657d86@dec.sakura.ne.jp>
References:  <20200316001745.07df62f72d647b924b657d86@dec.sakura.ne.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi!

This means, your system has UART serial device =E2=80=94 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@dec.sakura.ne.jp> =
wrote:
>=20
> Hi.
>=20
> 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.
>=20
> Reverting this fixes the issue.
>=20
> 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.
>=20
>=20
>> Author: tsoome
>> Date: Sat Mar 14 06:36:03 2020
>> New Revision: 358989
>> URL: https://svnweb.freebsd.org/changeset/base/358989
>>=20
>> Log:
>>  loader: add comconsole implementation on top of SIO protocol
>>=20
>>  Provide comconsole on top of SIO for arm platforms (x86 does use =
bios
> version).
>>=20
>> 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
>>=20
>> Modified: head/stand/efi/libefi/efi_console.c
>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>> --- 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
>> {
>> }
>>=20
>> +/*
>> + * Set up conin/conout/coninex to make sure we have input ready.
>> + */
>> static void
>> efi_cons_probe(struct console *cp)
>> {
>> +	EFI_STATUS status;
>> +
>> +	conout =3D ST->ConOut;
>> +	conin =3D ST->ConIn;
>> +
>> +	status =3D BS->OpenProtocol(ST->ConsoleInHandle,
> &simple_input_ex_guid,
>> +	    (void **)&coninex, IH, NULL,
> EFI_OPEN_PROTOCOL_GET_PROTOCOL);
>> +	if (status !=3D EFI_SUCCESS)
>> +		coninex =3D NULL;
>> +
>> 	cp->c_flags |=3D C_PRESENTIN | C_PRESENTOUT;
>> }
>>=20
>> @@ -889,15 +902,7 @@ efi_cons_init(int arg)
>> 	if (conin !=3D NULL)
>> 		return (0);
>>=20
>> -	conout =3D ST->ConOut;
>> -	conin =3D ST->ConIn;
>> -
>> 	conout->EnableCursor(conout, TRUE);
>> -	status =3D BS->OpenProtocol(ST->ConsoleInHandle,
> &simple_input_ex_guid,
>> -	    (void **)&coninex, IH, NULL,
> EFI_OPEN_PROTOCOL_GET_PROTOCOL);
>> -	if (status !=3D EFI_SUCCESS)
>> -		coninex =3D NULL;
>> -
>> 	if (efi_cons_update_mode())
>> 		return (0);
>>=20
>>=20
>> Modified: head/stand/efi/loader/arch/arm/Makefile.inc
>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>> --- 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$
>>=20
>> SRCS+=3D	exec.c \
>> +	efiserialio.c \
>> 	start.S
>>=20
>> HAVE_FDT=3Dyes
>=20
> (Snip)
>=20
>> @@ -930,7 +936,6 @@ main(int argc, CHAR16 *argv[])
>> 	if (!has_kbd && (howto & RB_PROBE))
>> 		howto |=3D RB_SERIAL | RB_MULTIPLE;
>> 	howto &=3D ~RB_PROBE;
>> -	uhowto =3D parse_uefi_con_out();
>>=20
>> 	/*
>> 	 * Read additional environment variables from the boot device's
>=20
> --=20
> Tomoaki AOKI    <junchoon@dec.sakura.ne.jp>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?746EE981-536F-49AD-9B76-F9F103ECB1F9>