[PATCH] test/py: efi_capsule: Handle expected reset after capsule on disk

Masami Hiramatsu masami.hiramatsu at linaro.org
Thu Feb 17 02:11:19 CET 2022


Hi Simon,

Let me confirm your point.
So are you concerning the 'real' reset for the capsule update test
case itself or this patch?

I'm actually learning how the test is working, so please help me to
understand how I can solve it.

There are 3 environments to run the test, sandbox, Qemu, and a real board.
If we reset a sandbox, it will continue to run (just restart itself),
but Qemu and real board will cause a real reset and it will terminate
the qemu or stop the board (depends on how it is implemented). Thus,
if a command or boot process will cause a reset, it will need a
special care (maybe respawn?).

Since the capsule update testcase only runs on sandbox, it will not
cause real reset. But maybe it is possible to support running on Qemu.

Current my test patch (and capsule update testcase itself) doesn't
handle the real reset case correctly even on Qemu. The Qemu needs
spawn a new instance and re-connect the console when the reset
happens.

If so, I think there are 2 issues to be solved.
1. change the capsule update testcase runable on Qemu
2. change my patch to handle the real reset correctly (not only
waiting for the next boot, but also respawn it again)

Do I understand correctly?

Thank you,

2022年2月17日(木) 2:53 Simon Glass <sjg at chromium.org>:
>
> Hi Heinrich,
>
> On Wed, 16 Feb 2022 at 10:50, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
> >
> > On 2/16/22 16:46, Tom Rini wrote:
> > > On Wed, Feb 16, 2022 at 04:32:40PM +0100, Heinrich Schuchardt wrote:
> > >> On 2/16/22 16:26, Simon Glass wrote:
> > >>> Hi Masami,
> > >>>
> > >>> On Tue, 15 Feb 2022 at 02:05, Masami Hiramatsu
> > >>> <masami.hiramatsu at linaro.org> wrote:
> > >>>>
> > >>>> Since now the capsule_on_disk will restart the u-boot sandbox right
> > >>>> after the capsule update, if CONFIG_EFI_CAPSULE_ON_DISK_EARLY=y, the
> > >>>> boot with a new capsule file will repeat reboot sequence. On the
> > >>>> other hand, if CONFIG_EFI_CAPSULE_ON_DISK_EARLY=n, the 'env print -e'
> > >>>> command will execute the capsule update on disk and reboot.
> > >>>>
> > >>>> Thus this update the uboot_console for those 2 cases;
> > >>>>
> > >>>>    - restart_uboot(): Add expect_earlyreset optional parameter so that
> > >>>>      it can handle the reboot while booting.
> > >>>>    - run_command(): Add wait_for_reboot optional parameter so that it
> > >>>>      can handle the reboot after executing a command.
> > >>>>
> > >>>> And enable those options in the test_capsule_firmware.py test cases.
> > >>>>
> > >>>> Signed-off-by: Masami Hiramatsu <masami.hiramatsu at linaro.org>
> > >>>> ---
> > >>>>    .../test_efi_capsule/test_capsule_firmware.py      |   39 ++++++--
> > >>>>    test/py/u_boot_console_base.py                     |   95 +++++++++++++++-----
> > >>>>    test/py/u_boot_console_sandbox.py                  |    6 +
> > >>>>    3 files changed, 102 insertions(+), 38 deletions(-)
> > >>>
> > >>> We have a means to avoid actually doing the reset, see the reset driver.
> > >>
> > >> The UEFI specification requires a cold reset after a capsule is updated
> > >> and before the console is reached. How could the reset driver help to
> > >> fix the Python tests?
> > >
> > > Is this test going to be able to run on qemu, sandbox, real hardware, or
> > > all 3?  The tests may well end up having to know a bit more, sadly,
> > > about the type of system they're testing.
> > >
> > Currently the test will only run on the sandbox in Gitlab (see usage of
> > @pytest.mark.boardspec('sandbox') in test/py/tests/test_efi_capsule/).
>
> Let me know if you need help reworking this patch to operate on
> sandbox without a 'real' reset.
>
> Regards,
> Simon



-- 
Masami Hiramatsu


More information about the U-Boot mailing list