From: Tom Rini <trini@konsulko.com>
To: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Simon Glass <sjg@chromium.org>,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
U-Boot Mailing List <u-boot@lists.denx.de>
Subject: Re: [PATCH v6 08/12] efi_loader: Disable ANSI output for tests
Date: Tue, 1 Oct 2024 17:14:15 -0600 [thread overview]
Message-ID: <20241001231415.GN4737@bill-the-cat> (raw)
In-Reply-To: <e02a9912-7260-4e0a-81d8-c7814907a791@gmx.de>
[-- Attachment #1: Type: text/plain, Size: 10695 bytes --]
On Wed, Oct 02, 2024 at 12:18:39AM +0200, Heinrich Schuchardt wrote:
> On 10/1/24 20:02, Tom Rini wrote:
> > On Tue, Oct 01, 2024 at 04:34:54AM +0200, Heinrich Schuchardt wrote:
> > > On 10/1/24 02:24, Tom Rini wrote:
> > > > On Tue, Oct 01, 2024 at 01:38:56AM +0200, Heinrich Schuchardt wrote:
> > > > > On 26.09.24 23:59, Simon Glass wrote:
> > > > > > We don't want ANSI characters written in tests since it is a pain to
> > > > > > check the output with ut_assert_nextline() et al.
> > > > > >
> > > > > > Provide a way to tests to request that ANSI characters not be sent.
> > > > > >
> > > > > > Add a proper function comment while we are here, to encourage others.
> > > > > >
> > > > > > Signed-off-by: Simon Glass <sjg@chromium.org>
> > > > >
> > > > > Please, consider prior review before resubmitting patches.
> > > > >
> > > > > As responded to all prior submissions:
> > > > >
> > > > > We want to test the code running on actual machines.
> > > > > We don't want to have sandbox code everywhere.
> > > > >
> > > > > I cannot see any test that is not passing due to the current behavior.
> > > >
> > > > The pytests for the EFI selftests are unreliable for me, on Raspberry Pi
> > > > 3, more often in 32bit mode than 64bit mode, but I feel like I see it
> > > > there too. And when they fail, the console log is full of ANSI escape
> > > > sequences. Is this specific test a test you run regularly on real
> > > > hardware?
> > > >
> > >
> > > It is not only the EFI test but also pytest adding color to the console
> > > output.
> >
> > Alright, so at least for the problems I have _today_, I've figured it
> > out, and the problem is that the watchdog test fails too quickly:
> >
> > [snip]
> > test/py/tests/test_efi_selftest.py ..F
> > test/py/u_boot_console_base.p
> > =================================== FAILURES ===================================
> > ______________________ test_efi_selftest_watchdog_reboot _______________________
> > test/py/tests/test_efi_selftest.py:61: in test_efi_selftest_watchdog_reboot
> > u_boot_console.restart_uboot()
> > test/py/u_boot_console_base.py:478: in restart_uboot
> > self.ensure_spawned(expect_reset)
> > test/py/u_boot_console_base.py:442: in ensure_spawned
> > self.wait_for_boot_prompt(loop_num = loop_num)
> > test/py/u_boot_console_base.py:195: in wait_for_boot_prompt
> > raise Exception('Bad pattern found on console: ' +
> > E Exception: Bad pattern found on console: spl_signon
> > ----------------------------- Captured stdout call -----------------------------
> > => setenv efi_selftest list
> > => => bootefi selftest
> > ^[7^[[r^[[999;999H^[[6n^[8No EFI system partition
> > No EFI system partition
> > Failed to persist EFI variables
> > No EFI system partition
> > Failed to persist EFI variables
> > No EFI system partition
> > Failed to persist EFI variables
> >
> > Available tests:
> > 'block image transfer' - on request
> > 'block device'
> > 'configuration tables'
> > 'controllers'
> > 'crc32'
> > 'device path'
> > 'device path utilities protocol'
> > 'conformance profile table'
> > 'event groups'
> > 'event services'
> > 'exception' - on request
> > 'ExitBootServices'
> > 'device tree'
> > 'graphical output'
> > 'HII database protocols'
> > 'load file protocol'
> > 'loaded image'
> > 'load image from file'
> > 'mem'
> > 'memory'
> > 'open protocol'
> > 'manage protocols'
> > 'register protocol notify'
> > 'reset system' - on request
> > 'reset system runtime' - on request
> > 'real time clock'
> > 'simple network protocol'
> > 'start image return'
> > 'start image exit'
> > 'text input' - on request
> > 'extended text input' - on request
> > 'text output'
> > 'task priority levels'
> > 'unicode collation'
> > 'variables'
> > 'variables at runtime'
> > 'virtual address map'
> > 'watchdog timer'
> > 'watchdog reboot' - on request
> > => => setenv efi_selftest watchdog reboot
> > => => bootefi selftest
> > ^[[1;37;40m
> > Testing EFI API implementation
> > ^[[0;37;40m^[[1;37;40m
> > Selected test: 'watchdog reboot'
> > ^[[0;37;40m^[[1;34;40m
> > Setting up 'watchdog reboot'
> > ^[[0;37;40m^[[1;32;40mSetting up 'watchdog reboot' succeeded
> > ^[[0;37;40m^[[1;34;40m
> > Executing 'watchdog reboot'
> > ^[[0;37;40m
> > EFI: Watchdog timeout
> > resetting ...
> > +u-boot-test-reset am64x_evm_a53 na
> > Selected role am64-sk from configuration file
> > Selected role am64-sk from configuration file
> > connecting to NetworkSerialPort(target=Target(name='am64-sk', env=Environment(config_file='/home/trini/u-boot/lg_env.yaml')), name='USBSerialPort', state=<BindingState.bound: 1>, avail=True, host='ti-lab-host', port=57479, speed=115200, protocol='rfc2217') calling microcom -s 115200 -t ti-lab-host:57479
> > connected to 192.168.116.10 (port 57479)
> > Escape character: Ctrl-\
> > Type the escape character to get to the prompt.
> >
> > U-Boot SPL 2024.10-rc5-00022-g17da9795c115 (Oct 01 2024 - 14:29:10 +0000)
> > SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
> > EEPROM not available at 0x50, trying to read at 0x51
> > SPL initial stack usage: 13368 bytes
> > Trying to boot from MMC2
> > Loading Environment from MMC... MMC Device 0 not found
> > *** Warning - No MMC card found, using default environment
> >
> > Starting ATF on ARM64 core...
> >
> > NOTICE: BL31: v2.10.0(release):v2.10.0-729-gc8be7c08c
> > NOTICE: BL31: Built : 13:50:07, Apr 24 2024
> > I/TC:
> > I/TC: OP-TEE version: 4.2.0-22-g16fbd46d2 (gcc version 13.2.0 (GCC)) #2 Wed Apr 24 19:50:23 UTC 2024 aarch64
> > I/TC: WARNING: This OP-TEE configuration might be insecure!
> > I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
> > I/TC: Primary CPU initializing
> > I/TC: GIC redistributor base address not provided
> > I/TC: Assuming default GIC group status and modifier
> > I/TC: SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
> > I/TC: HUK Initialized
> > I/TC: Activated SA2UL device
> > I/TC: Fixing SA2UL firewall owner for GP device
> > I/TC: Enabled firewalls for SA2UL TRNG device
> > I/TC: SA2UL TRNG initialized
> > I/TC: SA2UL Drivers initialized
> > I/TC: Primary CPU switching to normal world boot
> >
> > U-Boot SPL 2024.10-rc5-00022-g17da9795c115 (Oct 01 2024 - 14:31:31 +0000)
> > SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
> > Trying to boot from MMC2
> > ?
> > U-Boot SPL 2024.10-rc5-00022-g17da9795c115 (Oct 01 2024 - 14:29:10 +0000)
> > Resetting on cold boot to workaround ErrataID:i2331
> > Please resend tiboot3.bin in case of UART/DFU boot
> > resetting ...
> >
> > U-Boot SPL 2024.10-rc5-00022-g17da9795c115 (Oct 01 2024 - 14:29:10 +0000)
> > =========================== short test summary info ============================
> > SKIPPED [47] test/py/conftest.py:512: board "am64x_evm_a53" not supported
> > SKIPPED [5] test/py/conftest.py:531: .config feature "cmd_avb" not enabled
> > SKIPPED [1] test/py/conftest.py:531: .config feature "optee_ta_avb" not enabled
> > SKIPPED [1] test/py/conftest.py:531: .config feature "cmd_bootstage" not enabled
> > SKIPPED [2] test/py/conftest.py:531: .config feature "bootstage_stash" not enabled
> > SKIPPED [1] test/py/tests/test_dfu.py:114: got empty parameter set ['env__usb_dev_port'], function test_dfu at /home/trini/u-boot/u-boot/test/py/tests/test_dfu.py:113
> > SKIPPED [1] test/py/tests/test_efi_fit.py:401: No env__efi_fit_tftp_file binary specified in environment
> > FAILED test/py/tests/test_efi_selftest.py::test_efi_selftest_watchdog_reboot
> > !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
> > ================== 1 failed, 17 passed, 58 skipped in 58.92s ===================
> >
> > I thought it was the escape sequences confusing the check rather than
> > the platform takes longer than expected to provide whatever the expected
> > string is. Another TI K3 platform gets slightly farther along before
> > failing the same way. I'm going back to looping over Pis to see if they
> > fail in a way that they used to in my previous lab setup.
> >
>
> The relevant error message is:
>
> E Exception: Bad pattern found on console: spl_signon
>
> The error occurs because the substring
>
> U-Boot SPL 2024.10
>
> occurs multiple times during the reboot process. This is not expected in
> wait_for_boot_prompt().
>
> The EFI test is resetting the board and then calling restart_uboot()
> which by itself does another reset.
>
> While the watchdog triggered reboot is running thee test environment may
> need some time before triggering a reboot itself. This may lead to the
> observed duplicate output of the U-Boot greeter which is recorded as an
> error.
>
> Maybe we should directly call wait_for_boot_prompt(loop_num = 2).
>
>
> diff --git a/test/py/tests/test_efi_selftest.py
> b/test/py/tests/test_efi_selftest.py
> index 43f24245582..c3ee1888afb 100644
> --- a/test/py/tests/test_efi_selftest.py
> +++ b/test/py/tests/test_efi_selftest.py
> @@ -58,7 +58,7 @@ def test_efi_selftest_watchdog_reboot(u_boot_console):
> u_boot_console.run_command(cmd='bootefi selftest',
> wait_for_prompt=False)
> if u_boot_console.p.expect(['resetting', 'U-Boot']):
> raise Exception('Reset failed in \'watchdog reboot\' test')
> - u_boot_console.restart_uboot()
> + u_boot_console.wait_for_boot_prompt(loop_num = 2)
>
> @pytest.mark.buildconfigspec('cmd_bootefi_selftest')
> def test_efi_selftest_text_input(u_boot_console):
>
> Thanks for bringing the issue to my attention.
Thanks for digging in to this more. I suspect (and I'll try and confirm
soon) that we need to take in to account:
commit 645f75f6884a22905b0e3790ca9254fa1a13216e
Author: Tom Rini <trini@konsulko.com>
Date: Wed Apr 24 16:45:37 2024 -0600
test/py: Make the number of SPL banners seen a variable
Currently we have the option to tell the console code that we should
ignore the SPL banner. We also have an option to say that we can see it
a second time, and ignore it. However, some platforms such as TI AM64x
will have us see the SPL banner three times. Rather than add an
"spl3_skipped" option, rework the code. By default we expect to see the
banner once, but boards can specify seeing it as many times as they
expect to.
Signed-off-by: Tom Rini <trini@konsulko.com>
as well in this area.
>
> Best regards
>
> Heinrich
>
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
next prev parent reply other threads:[~2024-10-01 23:14 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-26 21:59 [PATCH v6 00/12] efi: Add a test for EFI bootmeth Simon Glass
2024-09-26 21:59 ` [PATCH v6 01/12] efi_loader: Rename and move CMD_BOOTEFI_HELLO_COMPILE Simon Glass
2024-09-26 21:59 ` [PATCH v6 02/12] efi: arm: x86: riscv: Drop crt0/relocal extra- rules Simon Glass
2024-09-26 21:59 ` [PATCH v6 03/12] efi_loader: Shorten the app rules Simon Glass
2024-09-26 21:59 ` [PATCH v6 04/12] efi_loader: Shorten the app rules further Simon Glass
2024-09-26 21:59 ` [PATCH v6 05/12] efi_loader: Show the vendor in helloworld Simon Glass
2024-09-27 11:59 ` Ilias Apalodimas
2024-09-27 12:33 ` Simon Glass
2024-09-26 21:59 ` [PATCH v6 06/12] efi: Use the same filename for all sandbox builds Simon Glass
2024-09-30 23:18 ` Heinrich Schuchardt
2024-10-17 23:23 ` Simon Glass
2024-10-18 0:17 ` Tom Rini
2024-10-18 3:05 ` Simon Glass
2024-10-18 3:40 ` Heinrich Schuchardt
2024-10-18 15:02 ` Simon Glass
2024-10-18 16:51 ` Heinrich Schuchardt
2024-09-26 21:59 ` [PATCH v6 07/12] bootstd: Add debugging for efi bootmeth Simon Glass
2024-09-26 21:59 ` [PATCH v6 08/12] efi_loader: Disable ANSI output for tests Simon Glass
2024-09-30 23:38 ` Heinrich Schuchardt
2024-10-01 0:24 ` Tom Rini
2024-10-01 2:34 ` Heinrich Schuchardt
2024-10-01 18:02 ` Tom Rini
2024-10-01 22:18 ` Heinrich Schuchardt
2024-10-01 23:14 ` Tom Rini [this message]
2024-10-11 22:16 ` Simon Glass
2024-10-11 22:28 ` Tom Rini
2024-10-13 19:33 ` Simon Glass
2024-10-14 2:25 ` Tom Rini
2024-10-14 19:13 ` Simon Glass
2024-10-01 7:49 ` Peter Robinson
2024-10-01 14:28 ` Tom Rini
2024-10-11 22:18 ` Simon Glass
2024-10-11 22:54 ` Tom Rini
2024-10-11 23:45 ` Heinrich Schuchardt
2024-10-12 0:36 ` Tom Rini
-- strict thread matches above, loose matches on Subject: below --
2024-09-26 22:02 Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241001231415.GN4737@bill-the-cat \
--to=trini@konsulko.com \
--cc=ilias.apalodimas@linaro.org \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.