Re: [PATCH 4/7] WIP: efi: Disable ANSI output
Hi Heinrich, On Tue, 21 Nov 2023 at 10:32, Heinrich Schuchardt wrote: > > On 11/21/23 12:35, Simon Glass wrote: > > We don't want ANSI characters written in tests since it is a pain to > > check the output. > > I never experienced such pain. The Gitlab output just renders things as > expected. > > > > > For now, don't bother checking the console size. > > > > A better solution is need, which allows ANSI output to be controlled > > within EFI. > > > > Signed-off-by: Simon Glass > > --- > > > > include/efi_loader.h | 14 -- > > lib/efi_loader/efi_console.c | 17 +++-- > > lib/efi_loader/efi_setup.c | 2 +- > > 3 files changed, 20 insertions(+), 13 deletions(-) > > > > diff --git a/include/efi_loader.h b/include/efi_loader.h > > index 247be060e1c0..ebe951922791 100644 > > --- a/include/efi_loader.h > > +++ b/include/efi_loader.h > > @@ -527,8 +527,18 @@ efi_status_t > > efi_bootmgr_update_media_device_boot_option(void); > > efi_status_t efi_bootmgr_delete_boot_option(u16 boot_index); > > /* search the boot option index in BootOrder */ > > bool efi_search_bootorder(u16 *bootorder, efi_uintn_t num, u32 target, > > u32 *index); > > -/* Set up console modes */ > > -void efi_setup_console_size(void); > > + > > +/** > > + * efi_setup_console_size() - update the mode table. > > + * > > + * @allow_ansi: Allow emitting ANSI characters > > + * > > + * By default the only mode available is 80x25. If the console has at > > least 50 > > + * lines, enable mode 80x50. If we can query the console size and it is > > neither > > + * 80x25 nor 80x50, set it as an additional mode. > > + */ > > +void efi_setup_console_size(bool allow_ansi); > > + > > /* Install device tree */ > > efi_status_t efi_install_fdt(void *fdt); > > /* Run loaded UEFI image */ > > diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c > > index 28087582e8d6..ea1608f8e6ec 100644 > > --- a/lib/efi_loader/efi_console.c > > +++ b/lib/efi_loader/efi_console.c > > @@ -349,22 +349,19 @@ static int __maybe_unused query_vidconsole(int *rows, > > int *cols) > > return 0; > > } > > > > -/** > > - * efi_setup_console_size() - update the mode table. > > - * > > - * By default the only mode available is 80x25. If the console has at > > least 50 > > - * lines, enable mode 80x50. If we can query the console size and it is > > neither > > - * 80x25 nor 80x50, set it as an additional mode. > > - */ > > -void efi_setup_console_size(void) > > +void efi_setup_console_size(bool allow_ansi) > > { > > int rows = 25, cols = 80; > > int ret = -ENODEV; > > > > if (IS_ENABLED(CONFIG_VIDEO)) > > ret = query_vidconsole(&rows, &cols); > > - if (ret) > > - ret = query_console_serial(&rows, &cols); > > + if (ret) { > > + if (allow_ansi) > > + ret = query_console_serial(&rows, &cols); > > + else > > + ret = 0; > > + } > > if (ret) > > return; > > > > diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c > > index e6de685e8795..d4226a3011ac 100644 > > --- a/lib/efi_loader/efi_setup.c > > +++ b/lib/efi_loader/efi_setup.c > > @@ -230,7 +230,7 @@ efi_status_t efi_init_obj_list(void) > > return efi_obj_list_initialized; > > > > /* Set up console modes */ > > - efi_setup_console_size(); > > + efi_setup_console_size(false); > > This would render our console non-compliant. Please, keep it as is. > > Testing is not the primary task of U-Boot. If you need to filter test > output, please, add a filter method to your test setup. This is just a WIP patch, but we do need a way to avoid outputting ANSI output since ut_assert_nextline() needs that. Can you suggest a better way? Perhaps we could have some EFI settings somewhere? Regards, Simon
Re: [PATCH 4/7] WIP: efi: Disable ANSI output
On 11/21/23 12:35, Simon Glass wrote: We don't want ANSI characters written in tests since it is a pain to check the output. I never experienced such pain. The Gitlab output just renders things as expected. For now, don't bother checking the console size. A better solution is need, which allows ANSI output to be controlled within EFI. Signed-off-by: Simon Glass --- include/efi_loader.h | 14 -- lib/efi_loader/efi_console.c | 17 +++-- lib/efi_loader/efi_setup.c | 2 +- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/include/efi_loader.h b/include/efi_loader.h index 247be060e1c0..ebe951922791 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -527,8 +527,18 @@ efi_status_t efi_bootmgr_update_media_device_boot_option(void); efi_status_t efi_bootmgr_delete_boot_option(u16 boot_index); /* search the boot option index in BootOrder */ bool efi_search_bootorder(u16 *bootorder, efi_uintn_t num, u32 target, u32 *index); -/* Set up console modes */ -void efi_setup_console_size(void); + +/** + * efi_setup_console_size() - update the mode table. + * + * @allow_ansi: Allow emitting ANSI characters + * + * By default the only mode available is 80x25. If the console has at least 50 + * lines, enable mode 80x50. If we can query the console size and it is neither + * 80x25 nor 80x50, set it as an additional mode. + */ +void efi_setup_console_size(bool allow_ansi); + /* Install device tree */ efi_status_t efi_install_fdt(void *fdt); /* Run loaded UEFI image */ diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c index 28087582e8d6..ea1608f8e6ec 100644 --- a/lib/efi_loader/efi_console.c +++ b/lib/efi_loader/efi_console.c @@ -349,22 +349,19 @@ static int __maybe_unused query_vidconsole(int *rows, int *cols) return 0; } -/** - * efi_setup_console_size() - update the mode table. - * - * By default the only mode available is 80x25. If the console has at least 50 - * lines, enable mode 80x50. If we can query the console size and it is neither - * 80x25 nor 80x50, set it as an additional mode. - */ -void efi_setup_console_size(void) +void efi_setup_console_size(bool allow_ansi) { int rows = 25, cols = 80; int ret = -ENODEV; if (IS_ENABLED(CONFIG_VIDEO)) ret = query_vidconsole(&rows, &cols); - if (ret) - ret = query_console_serial(&rows, &cols); + if (ret) { + if (allow_ansi) + ret = query_console_serial(&rows, &cols); + else + ret = 0; + } if (ret) return; diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c index e6de685e8795..d4226a3011ac 100644 --- a/lib/efi_loader/efi_setup.c +++ b/lib/efi_loader/efi_setup.c @@ -230,7 +230,7 @@ efi_status_t efi_init_obj_list(void) return efi_obj_list_initialized; /* Set up console modes */ - efi_setup_console_size(); + efi_setup_console_size(false); This would render our console non-compliant. Please, keep it as is. Testing is not the primary task of U-Boot. If you need to filter test output, please, add a filter method to your test setup. Best regards Heinrich /* * Probe block devices to find the ESP.
[PATCH 4/7] WIP: efi: Disable ANSI output
We don't want ANSI characters written in tests since it is a pain to check the output. For now, don't bother checking the console size. A better solution is need, which allows ANSI output to be controlled within EFI. Signed-off-by: Simon Glass --- include/efi_loader.h | 14 -- lib/efi_loader/efi_console.c | 17 +++-- lib/efi_loader/efi_setup.c | 2 +- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/include/efi_loader.h b/include/efi_loader.h index 247be060e1c0..ebe951922791 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -527,8 +527,18 @@ efi_status_t efi_bootmgr_update_media_device_boot_option(void); efi_status_t efi_bootmgr_delete_boot_option(u16 boot_index); /* search the boot option index in BootOrder */ bool efi_search_bootorder(u16 *bootorder, efi_uintn_t num, u32 target, u32 *index); -/* Set up console modes */ -void efi_setup_console_size(void); + +/** + * efi_setup_console_size() - update the mode table. + * + * @allow_ansi: Allow emitting ANSI characters + * + * By default the only mode available is 80x25. If the console has at least 50 + * lines, enable mode 80x50. If we can query the console size and it is neither + * 80x25 nor 80x50, set it as an additional mode. + */ +void efi_setup_console_size(bool allow_ansi); + /* Install device tree */ efi_status_t efi_install_fdt(void *fdt); /* Run loaded UEFI image */ diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c index 28087582e8d6..ea1608f8e6ec 100644 --- a/lib/efi_loader/efi_console.c +++ b/lib/efi_loader/efi_console.c @@ -349,22 +349,19 @@ static int __maybe_unused query_vidconsole(int *rows, int *cols) return 0; } -/** - * efi_setup_console_size() - update the mode table. - * - * By default the only mode available is 80x25. If the console has at least 50 - * lines, enable mode 80x50. If we can query the console size and it is neither - * 80x25 nor 80x50, set it as an additional mode. - */ -void efi_setup_console_size(void) +void efi_setup_console_size(bool allow_ansi) { int rows = 25, cols = 80; int ret = -ENODEV; if (IS_ENABLED(CONFIG_VIDEO)) ret = query_vidconsole(&rows, &cols); - if (ret) - ret = query_console_serial(&rows, &cols); + if (ret) { + if (allow_ansi) + ret = query_console_serial(&rows, &cols); + else + ret = 0; + } if (ret) return; diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c index e6de685e8795..d4226a3011ac 100644 --- a/lib/efi_loader/efi_setup.c +++ b/lib/efi_loader/efi_setup.c @@ -230,7 +230,7 @@ efi_status_t efi_init_obj_list(void) return efi_obj_list_initialized; /* Set up console modes */ - efi_setup_console_size(); + efi_setup_console_size(false); /* * Probe block devices to find the ESP. -- 2.43.0.rc1.413.gea7ed67945-goog