mbox series

[v5,00/14] efi: Add a test for EFI bootmeth

Message ID 20240902011825.746421-1-sjg@chromium.org
Headers show
Series efi: Add a test for EFI bootmeth | expand

Message

Simon Glass Sept. 2, 2024, 1:18 a.m. UTC
The test coverage for the EFI bootmeth is incomplete since it does not
actually boot the application.

This series creates a simple test for this purpose. It includes a few
patches to make this work:

- ANSI output from the EFI loader confusing the unit-testing checker
- Hang in sandbox virtio due to EFI probing all block devices

Other necessary fixes have been split out into two other series.

Changes in v5:
- Drop Fixes tag
- Drop the Fixes tag
- Rebase on updated efif series
- Deal with sandbox CONFIG_LOGF_FUNC

Changes in v4:
- Add efi_loader tag to some patches
- Split out non-EFI patches into a different series

Changes in v3:
- Drop the extra- rules since scripts/Makefile.lib takes care of it
- Add new patch to drop crt0/relocal extra- rules
- Put back the Linaro copyright accidentally removed
- Add a Fixes tag
- Mention the issue created for this problem

Changes in v2:
- Fix 'use' typo
- Reword commit message
- Use 'Firmware vendor' instead of just 'Vendor'
- Add many new patches to resolve all the outstanding test issues

Simon Glass (14):
  efi_loader: Use puts() in cout so that console recording works
  efi_loader: Put back copyright message
  efi_loader: Rename and move CMD_BOOTEFI_HELLO_COMPILE
  efi: arm: x86: riscv: Drop crt0/relocal extra- rules
  efi_loader: Shorten the app rules
  efi_loader: Shorten the app rules further
  efi_loader: Show the vendor in helloworld
  efi: Use the same filename for all sandbox builds
  bootstd: Add debugging for efi bootmeth
  efi_loader: Disable ANSI output for tests
  efi_loader: Add a test app
  efi_loader: Avoid using sandbox virtio devices
  test: efi: boot: Set up an image suitable for EFI testing
  test: efi: boot: Add a test for the efi bootmeth

 arch/arm/lib/Makefile               |   8 ----
 arch/riscv/lib/Makefile             |   4 --
 arch/sandbox/dts/test.dts           |   2 +-
 arch/x86/lib/Makefile               |  16 -------
 boot/bootmeth_efi.c                 |  11 ++++-
 cmd/Kconfig                         |  14 +-----
 configs/octeontx2_95xx_defconfig    |   2 +-
 configs/octeontx2_96xx_defconfig    |   2 +-
 configs/octeontx_81xx_defconfig     |   2 +-
 configs/octeontx_83xx_defconfig     |   2 +-
 doc/develop/uefi/uefi.rst           |   2 +-
 include/efi_default_filename.h      |  24 +---------
 include/efi_loader.h                |  21 ++++++++-
 lib/efi_loader/Kconfig              |  22 +++++++++
 lib/efi_loader/Makefile             |  47 ++++++-------------
 lib/efi_loader/efi_console.c        |  28 ++++++++----
 lib/efi_loader/efi_disk.c           |  14 +++++-
 lib/efi_loader/helloworld.c         |   6 +++
 lib/efi_loader/testapp.c            |  68 ++++++++++++++++++++++++++++
 test/boot/bootdev.c                 |  18 +++++++-
 test/boot/bootflow.c                |  66 ++++++++++++++++++++++++++-
 test/py/tests/bootstd/flash1.img.xz | Bin 0 -> 5016 bytes
 test/py/tests/test_efi_fit.py       |   2 +-
 test/py/tests/test_efi_loader.py    |   2 +-
 test/py/tests/test_ut.py            |  52 ++++++++++++++++++---
 25 files changed, 310 insertions(+), 125 deletions(-)
 create mode 100644 lib/efi_loader/testapp.c
 create mode 100644 test/py/tests/bootstd/flash1.img.xz

Comments

Simon Glass Sept. 12, 2024, 1:01 a.m. UTC | #1
Hi,

On Sun, 1 Sept 2024 at 19:18, Simon Glass <sjg@chromium.org> wrote:
>
> The test coverage for the EFI bootmeth is incomplete since it does not
> actually boot the application.
>
> This series creates a simple test for this purpose. It includes a few
> patches to make this work:
>
> - ANSI output from the EFI loader confusing the unit-testing checker
> - Hang in sandbox virtio due to EFI probing all block devices
>
> Other necessary fixes have been split out into two other series.
>
> Changes in v5:
> - Drop Fixes tag
> - Drop the Fixes tag
> - Rebase on updated efif series
> - Deal with sandbox CONFIG_LOGF_FUNC
>
> Changes in v4:
> - Add efi_loader tag to some patches
> - Split out non-EFI patches into a different series
>
> Changes in v3:
> - Drop the extra- rules since scripts/Makefile.lib takes care of it
> - Add new patch to drop crt0/relocal extra- rules
> - Put back the Linaro copyright accidentally removed
> - Add a Fixes tag
> - Mention the issue created for this problem
>
> Changes in v2:
> - Fix 'use' typo
> - Reword commit message
> - Use 'Firmware vendor' instead of just 'Vendor'
> - Add many new patches to resolve all the outstanding test issues
>
> Simon Glass (14):
>   efi_loader: Use puts() in cout so that console recording works
>   efi_loader: Put back copyright message
>   efi_loader: Rename and move CMD_BOOTEFI_HELLO_COMPILE
>   efi: arm: x86: riscv: Drop crt0/relocal extra- rules
>   efi_loader: Shorten the app rules
>   efi_loader: Shorten the app rules further
>   efi_loader: Show the vendor in helloworld
>   efi: Use the same filename for all sandbox builds
>   bootstd: Add debugging for efi bootmeth
>   efi_loader: Disable ANSI output for tests
>   efi_loader: Add a test app
>   efi_loader: Avoid using sandbox virtio devices
>   test: efi: boot: Set up an image suitable for EFI testing
>   test: efi: boot: Add a test for the efi bootmeth
>
>  arch/arm/lib/Makefile               |   8 ----
>  arch/riscv/lib/Makefile             |   4 --
>  arch/sandbox/dts/test.dts           |   2 +-
>  arch/x86/lib/Makefile               |  16 -------
>  boot/bootmeth_efi.c                 |  11 ++++-
>  cmd/Kconfig                         |  14 +-----
>  configs/octeontx2_95xx_defconfig    |   2 +-
>  configs/octeontx2_96xx_defconfig    |   2 +-
>  configs/octeontx_81xx_defconfig     |   2 +-
>  configs/octeontx_83xx_defconfig     |   2 +-
>  doc/develop/uefi/uefi.rst           |   2 +-
>  include/efi_default_filename.h      |  24 +---------
>  include/efi_loader.h                |  21 ++++++++-
>  lib/efi_loader/Kconfig              |  22 +++++++++
>  lib/efi_loader/Makefile             |  47 ++++++-------------
>  lib/efi_loader/efi_console.c        |  28 ++++++++----
>  lib/efi_loader/efi_disk.c           |  14 +++++-
>  lib/efi_loader/helloworld.c         |   6 +++
>  lib/efi_loader/testapp.c            |  68 ++++++++++++++++++++++++++++
>  test/boot/bootdev.c                 |  18 +++++++-
>  test/boot/bootflow.c                |  66 ++++++++++++++++++++++++++-
>  test/py/tests/bootstd/flash1.img.xz | Bin 0 -> 5016 bytes
>  test/py/tests/test_efi_fit.py       |   2 +-
>  test/py/tests/test_efi_loader.py    |   2 +-
>  test/py/tests/test_ut.py            |  52 ++++++++++++++++++---
>  25 files changed, 310 insertions(+), 125 deletions(-)
>  create mode 100644 lib/efi_loader/testapp.c
>  create mode 100644 test/py/tests/bootstd/flash1.img.xz
>
> --
> 2.34.1
>

ping on this series, please.

Regards,
SImon
Ilias Apalodimas Sept. 12, 2024, 7:02 a.m. UTC | #2
Hi Simon,

On Thu, 12 Sept 2024 at 04:01, Simon Glass <sjg@chromium.org> wrote:
>
> Hi,
>
> On Sun, 1 Sept 2024 at 19:18, Simon Glass <sjg@chromium.org> wrote:
> >
> > The test coverage for the EFI bootmeth is incomplete since it does not
> > actually boot the application.
> >
> > This series creates a simple test for this purpose. It includes a few
> > patches to make this work:
> >
> > - ANSI output from the EFI loader confusing the unit-testing checker
> > - Hang in sandbox virtio due to EFI probing all block devices
> >
> > Other necessary fixes have been split out into two other series.
> >
> > Changes in v5:
> > - Drop Fixes tag
> > - Drop the Fixes tag
> > - Rebase on updated efif series
> > - Deal with sandbox CONFIG_LOGF_FUNC
> >
> > Changes in v4:
> > - Add efi_loader tag to some patches
> > - Split out non-EFI patches into a different series
> >
> > Changes in v3:
> > - Drop the extra- rules since scripts/Makefile.lib takes care of it
> > - Add new patch to drop crt0/relocal extra- rules
> > - Put back the Linaro copyright accidentally removed
> > - Add a Fixes tag
> > - Mention the issue created for this problem
> >
> > Changes in v2:
> > - Fix 'use' typo
> > - Reword commit message
> > - Use 'Firmware vendor' instead of just 'Vendor'
> > - Add many new patches to resolve all the outstanding test issues
> >
> > Simon Glass (14):
> >   efi_loader: Use puts() in cout so that console recording works
> >   efi_loader: Put back copyright message
> >   efi_loader: Rename and move CMD_BOOTEFI_HELLO_COMPILE
> >   efi: arm: x86: riscv: Drop crt0/relocal extra- rules
> >   efi_loader: Shorten the app rules
> >   efi_loader: Shorten the app rules further
> >   efi_loader: Show the vendor in helloworld
> >   efi: Use the same filename for all sandbox builds
> >   bootstd: Add debugging for efi bootmeth
> >   efi_loader: Disable ANSI output for tests
> >   efi_loader: Add a test app
> >   efi_loader: Avoid using sandbox virtio devices
> >   test: efi: boot: Set up an image suitable for EFI testing
> >   test: efi: boot: Add a test for the efi bootmeth
> >
> >  arch/arm/lib/Makefile               |   8 ----
> >  arch/riscv/lib/Makefile             |   4 --
> >  arch/sandbox/dts/test.dts           |   2 +-
> >  arch/x86/lib/Makefile               |  16 -------
> >  boot/bootmeth_efi.c                 |  11 ++++-
> >  cmd/Kconfig                         |  14 +-----
> >  configs/octeontx2_95xx_defconfig    |   2 +-
> >  configs/octeontx2_96xx_defconfig    |   2 +-
> >  configs/octeontx_81xx_defconfig     |   2 +-
> >  configs/octeontx_83xx_defconfig     |   2 +-
> >  doc/develop/uefi/uefi.rst           |   2 +-
> >  include/efi_default_filename.h      |  24 +---------
> >  include/efi_loader.h                |  21 ++++++++-
> >  lib/efi_loader/Kconfig              |  22 +++++++++
> >  lib/efi_loader/Makefile             |  47 ++++++-------------
> >  lib/efi_loader/efi_console.c        |  28 ++++++++----
> >  lib/efi_loader/efi_disk.c           |  14 +++++-
> >  lib/efi_loader/helloworld.c         |   6 +++
> >  lib/efi_loader/testapp.c            |  68 ++++++++++++++++++++++++++++
> >  test/boot/bootdev.c                 |  18 +++++++-
> >  test/boot/bootflow.c                |  66 ++++++++++++++++++++++++++-
> >  test/py/tests/bootstd/flash1.img.xz | Bin 0 -> 5016 bytes
> >  test/py/tests/test_efi_fit.py       |   2 +-
> >  test/py/tests/test_efi_loader.py    |   2 +-
> >  test/py/tests/test_ut.py            |  52 ++++++++++++++++++---
> >  25 files changed, 310 insertions(+), 125 deletions(-)
> >  create mode 100644 lib/efi_loader/testapp.c
> >  create mode 100644 test/py/tests/bootstd/flash1.img.xz
> >
> > --
> > 2.34.1
> >
>
> ping on this series, please.

Most of the patches have been reviewed.
There were questions and feedback on v4 that haven't changed on v5 AFAICT [0]

[0] https://lore.kernel.org/u-boot/20240826181826.GI2479150@bill-the-cat/

Regards
/Ilias
>
> Regards,
> SImon
Heinrich Schuchardt Sept. 13, 2024, 1:50 p.m. UTC | #3
On 02.09.24 03:18, Simon Glass wrote:
> The test coverage for the EFI bootmeth is incomplete since it does not
> actually boot the application.
>
> This series creates a simple test for this purpose. It includes a few
> patches to make this work:
>
> - ANSI output from the EFI loader confusing the unit-testing checker
> - Hang in sandbox virtio due to EFI probing all block devices
>
> Other necessary fixes have been split out into two other series.

Hello Simon,

Patches 1 and 2 are in my pull-request for the next branch.

The rest needs to be rebased after considering the review comments.

Best regards

Heinrich
Simon Glass Sept. 19, 2024, 2:13 p.m. UTC | #4
Hi Heinrich,

On Fri, 13 Sept 2024 at 15:55, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> On 02.09.24 03:18, Simon Glass wrote:
> > The test coverage for the EFI bootmeth is incomplete since it does not
> > actually boot the application.
> >
> > This series creates a simple test for this purpose. It includes a few
> > patches to make this work:
> >
> > - ANSI output from the EFI loader confusing the unit-testing checker
> > - Hang in sandbox virtio due to EFI probing all block devices
> >
> > Other necessary fixes have been split out into two other series.
>
> Hello Simon,
>
> Patches 1 and 2 are in my pull-request for the next branch.
>
> The rest needs to be rebased after considering the review comments.

OK thanks, I will give it another pass.

Regards,
Simon