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