* [PATCH v5 0/2] efi_loader: console improvements
@ 2023-01-18 21:24 Jan Kiszka
2023-01-18 21:24 ` [PATCH v5 1/2] efi_loader: Avoid overwriting previous outputs on console screen clearing Jan Kiszka
2023-01-18 21:25 ` [PATCH v5 2/2] efi_loader: Set default console colors on efi_cout_clear_screen if needed Jan Kiszka
0 siblings, 2 replies; 3+ messages in thread
From: Jan Kiszka @ 2023-01-18 21:24 UTC (permalink / raw)
To: U-Boot Mailing List, Heinrich Schuchardt
Changes to v4:
- move cursor to bottom-right before scrolling
Jan
Jan Kiszka (2):
efi_loader: Avoid overwriting previous outputs on console screen
clearing
efi_loader: Set default console colors on efi_cout_clear_screen if
needed
lib/efi_loader/Kconfig | 9 +++++++++
lib/efi_loader/efi_console.c | 20 +++++++++++++++++++-
2 files changed, 28 insertions(+), 1 deletion(-)
--
2.35.3
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH v5 1/2] efi_loader: Avoid overwriting previous outputs on console screen clearing 2023-01-18 21:24 [PATCH v5 0/2] efi_loader: console improvements Jan Kiszka @ 2023-01-18 21:24 ` Jan Kiszka 2023-01-18 21:25 ` [PATCH v5 2/2] efi_loader: Set default console colors on efi_cout_clear_screen if needed Jan Kiszka 1 sibling, 0 replies; 3+ messages in thread From: Jan Kiszka @ 2023-01-18 21:24 UTC (permalink / raw) To: U-Boot Mailing List, Heinrich Schuchardt From: Jan Kiszka <jan.kiszka@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. Still, there were remaining concerns about side effects, so this is provided as an opt-in feature. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- lib/efi_loader/Kconfig | 9 +++++++++ lib/efi_loader/efi_console.c | 14 +++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig index b498c72206f..b2c3250b4ad 100644 --- a/lib/efi_loader/Kconfig +++ b/lib/efi_loader/Kconfig @@ -124,6 +124,15 @@ config EFI_SET_TIME Provide the SetTime() runtime service at boottime. This service can be used by an EFI application to adjust the real time clock. +config EFI_SCROLL_ON_CLEAR_SCREEN + bool "Avoid overwriting previous output on clear screen" + help + Instead of moving the cursor home when the console screen should be + cleared, emit blank new lines so that previous output is scrolled + out of sight rather than overwritten. This allows on serial consoles + to capture complete boot logs (except for interactive menus etc.) + and can ease debugging related issues. + config EFI_HAVE_CAPSULE_SUPPORT bool diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c index 4d08dd3763a..faa605e88d1 100644 --- a/lib/efi_loader/efi_console.c +++ b/lib/efi_loader/efi_console.c @@ -461,10 +461,22 @@ static efi_status_t EFIAPI efi_cout_set_attribute( } /** - * efi_cout_clear_screen() - clear screen + * efi_clear_screen() - clear screen */ static void efi_clear_screen(void) { + if (CONFIG_IS_ENABLED(EFI_SCROLL_ON_CLEAR_SCREEN)) { + unsigned int row, screen_rows, screen_columns; + + /* Avoid overwriting previous outputs on streaming consoles */ + screen_rows = efi_cout_modes[efi_con_mode.mode].rows; + screen_columns = efi_cout_modes[efi_con_mode.mode].columns; + printf(ESC "[%d;1H", + (int)screen_rows + 1, (int)screen_columns + 1); + for (row = 1; row < screen_rows; row++) + printf("\n"); + } + /* * The Linux console wants both a clear and a home command. The video * uclass does not support <ESC>[H without coordinates, yet. -- 2.35.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v5 2/2] efi_loader: Set default console colors on efi_cout_clear_screen if needed 2023-01-18 21:24 [PATCH v5 0/2] efi_loader: console improvements Jan Kiszka 2023-01-18 21:24 ` [PATCH v5 1/2] efi_loader: Avoid overwriting previous outputs on console screen clearing Jan Kiszka @ 2023-01-18 21:25 ` Jan Kiszka 1 sibling, 0 replies; 3+ messages in thread From: Jan Kiszka @ 2023-01-18 21:25 UTC (permalink / raw) To: U-Boot Mailing List, Heinrich Schuchardt From: Jan Kiszka <jan.kiszka@siemens.com> Ensures a consistent background color of the whole screen for succeeding outputs as both demanded by the spec and implemented in EDK2 as well. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- lib/efi_loader/efi_console.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c index faa605e88d1..db31b2a751a 100644 --- a/lib/efi_loader/efi_console.c +++ b/lib/efi_loader/efi_console.c @@ -501,6 +501,12 @@ static efi_status_t EFIAPI efi_cout_clear_screen( { EFI_ENTRY("%p", this); + /* Set default colors if not done yet */ + if (efi_con_mode.attribute == 0) { + efi_con_mode.attribute = 0x07; + printf(ESC "[0;37;40m"); + } + efi_clear_screen(); return EFI_EXIT(EFI_SUCCESS); -- 2.35.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-01-18 21:25 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-01-18 21:24 [PATCH v5 0/2] efi_loader: console improvements Jan Kiszka 2023-01-18 21:24 ` [PATCH v5 1/2] efi_loader: Avoid overwriting previous outputs on console screen clearing Jan Kiszka 2023-01-18 21:25 ` [PATCH v5 2/2] efi_loader: Set default console colors on efi_cout_clear_screen if needed Jan Kiszka
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox