[PATCH v2] efi_loader: Improve console screen clearing and reset
Heinrich Schuchardt
xypron.glpk at gmx.de
Fri May 6 18:46:30 CEST 2022
On 5/6/22 16:50, Jan Kiszka wrote:
> From: Jan Kiszka <jan.kiszka at siemens.com>
>
> Before clearing the screen, ensure that no previous output of firmware
> or UEFI programs will be overwritten on serial devices or other
> streaming consoles. This helps generating complete boot logs.
>
> Tested regarding multi-output against qemu-x86_defconfig.
>
> Signed-off-by: Jan Kiszka <jan.kiszka at siemens.com>
> ---
>
> Changes in v2:
> - rebased and tested against more scenarios, sucessfully
>
> lib/efi_loader/efi_console.c | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
> index 60a3fc85ac4..0270b20bafe 100644
> --- a/lib/efi_loader/efi_console.c
> +++ b/lib/efi_loader/efi_console.c
> @@ -463,8 +463,18 @@ static efi_status_t EFIAPI efi_cout_set_attribute(
> static efi_status_t EFIAPI efi_cout_clear_screen(
> struct efi_simple_text_output_protocol *this)
> {
> + unsigned int row;
> +
> EFI_ENTRY("%p", this);
>
> + /* Avoid overwriting previous outputs on streaming consoles */
> + for (row = 1; row < efi_cout_modes[efi_con_mode.mode].rows; row++)
> + printf("\n");
Unfortunately you seem to have missed to consider my review comments in
https://lists.denx.de/pipermail/u-boot/2022-April/482754.html
Best regards
Heinrich
> +
> + /* Set default colors if not done yet */
> + if (efi_con_mode.attribute == 0)
> + efi_cout_set_attribute(this, 0x07);
> +
> /*
> * The Linux console wants both a clear and a home command. The video
> * uclass does not support <ESC>[H without coordinates, yet.
> @@ -522,9 +532,9 @@ static efi_status_t EFIAPI efi_cout_reset(
> {
> EFI_ENTRY("%p, %d", this, extended_verification);
>
> - /* Set default colors */
> - efi_con_mode.attribute = 0x07;
> - printf(ESC "[0;37;40m");
> + /* Trigger reset to default colors */
> + efi_con_mode.attribute = 0;
> +
> /* Clear screen */
> EFI_CALL(efi_cout_clear_screen(this));
>
More information about the U-Boot
mailing list