public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v2 00/29] test: spl: Test some load methods
@ 2023-10-14 20:47 Sean Anderson
  2023-10-14 20:47 ` [PATCH v2 01/29] spl: legacy: Fix referencing _image_binary_end Sean Anderson
                   ` (29 more replies)
  0 siblings, 30 replies; 43+ messages in thread
From: Sean Anderson @ 2023-10-14 20:47 UTC (permalink / raw)
  To: u-boot, Tom Rini
  Cc: Harald Seiler, Simon Glass, Heinrich Schuchardt, Sean Anderson,
	uboot-imx, Anatolij Gustschin, Fabio Estevam, Fabio Estevam,
	Heiko Schocher, Jaehoon Chung, Jagan Teki, Joe Hershberger,
	Marek Vasut, Mayuresh Chitale, Michael Trimarchi, Nitin Garg,
	Peng Fan, Ramon Fried, Roger Quadros, Stefano Babic, Vignesh R,
	Ye Li

This series adds some tests for various SPL load methods, with the intent of
helping debug v6 of [1]. With that in mind, notable omissions include NAND and
ROMAPI, which both lack sandbox implementations, and OS_BOOT, which I have
deferred due to its complexity. Semihosting is also omitted, but I think we can
test that with qemu.

In order to test all of these methods, we must first generate suitable images,
possibly on filesystems. While other tests have historically generated these
images using external tools (e.g. mkimage, mkfs, etc.), I have chosen to
generate them on the fly. This is for a few reasons:

- By removing external dependencies on pytest to create certain files, the tests
  become self-contained. This makes them easier to iterate on and debug.
- By generating tests at runtime, we can dynamically vary the content. This
  helps detect test failures, as even if tests are loaded to the same location,
  the expected content will be different.
- We are not testing the image parsers themselves (e.g. spl_load_simple_fit or
  fs_read) but rather the load methods (e.g. spl_mmc_load_image). It is
  unnecessary to exercise full functionality or generate 100% correct images.
- By reducing functionality to only what is necessary, the complexity of various
  formats can often be greatly reduced.

This series depends on [2-3], which are small fixes identified through this
patch set. The organization of patches in this series is as follows:

- General fixes for bugs which are unlikely to be triggered outside of this
  series
- Changes to IMX8 container images to facilitate testing
- General prep. work, particularly regarding linker issues
- The tests themselves

Passing CI at [4].

[1] https://lore.kernel.org/all/20230731224304.111081-1-sean.anderson@seco.com/
[2] https://lore.kernel.org/all/20230930204246.515254-1-seanga2@gmail.com/
[3] https://lore.kernel.org/all/20231008014748.1987840-1-seanga2@gmail.com/
[4] https://source.denx.de/u-boot/custodians/u-boot-clk/-/pipelines/18128

Changes in v2:
- Use "address of" to describe the "&" operator
- Remove check for zero entry point in spl_load_fit_image
- Use log_err for errors in read_auth_container
- Clarify commit message for patch "Check header before calling
  spl_load_imx_container"
- Hide SPL_OF_REAL unless SANDBOX is enabled
- Disable sandbox filesystem in SPL instead of compiling it in
- Split ext4 defines into their own commit
- Use SPL_TPL_ for compiling fastboot functions
- Use callbacks to invalidate SPL caches instead of disabling them entirely
- Split off -T support into its own commit
- Compare to PHASE_SPL in sandbox_cmdline_cb_test_fdt for clarity
- Remove redundant condition on CONFIG_SPL_UT_LOAD in test/image/Makefile
- Remove unused mapmem.h include in spl_load_os.c
- Fix size not being updated in board_spl_fit_buffer_addr
- Fix return value documentation for check_image_info
- Explicitly invalidate FAT block device cache before testing
- Remove unused dm.h include in spl_load.c
- Add note about why we enable SPL_TIMER
- Explicitly invalidate FAT block device cache before testing
- Correct return value documentation for do_spl_test_load
- Explicitly invalidate FAT and MMC caches before testing
- Add a comment about why we need to initialize bi_dram
- Clarify generation process for LZMA data

Sean Anderson (29):
  spl: legacy: Fix referencing _image_binary_end
  spl: nor: Don't allocate header on stack
  spl: fit: Fix entry point for SPL_LOAD_FIT_FULL
  arm: imx: Fix i.MX8 container load address
  arm: imx: Add newlines after error messages
  arm: imx: Use log_err for errors in read_auth_container
  arm: imx: Add function to validate i.MX8 containers
  arm: imx: Check header before calling spl_load_imx_container
  Move i.MX8 container image loading support to common/spl
  spl: Allow enabling SPL_OF_REAL and SPL_OF_PLATDATA at the same time
  lib: acpi: Fix linking SPL when ACPIGEN is enabled
  fs: Disable sandbox filesystem in SPL
  fs: ext4: Fix building ext4 in SPL if write is enabled
  fs: ext4: Add some defines for testing
  net: Fix compiling SPL when fastboot is enabled
  net: bootp: Move port numbers to header
  net: bootp: Fall back to BOOTP from DHCP when unit testing
  spl: Add callbacks to invalidate cached devices
  spl: Use map_sysmem where appropriate
  sandbox: Support -T in spl
  test: spl: Split tests up and use some configs
  test: spl: Fix spl_test_load not failing if fname doesn't exist
  test: spl: Add functions to create images
  test: spl: Add functions to create filesystems
  test: spl: Add a test for spl_blk_load_image
  test: spl: Add a test for the MMC load method
  test: spl: Add a test for the NET load method
  test: spl: Add a test for the NOR load method
  test: spl: Add a test for the SPI load method

 .azure-pipelines.yml                          |   4 +
 .gitlab-ci.yml                                |   7 +
 MAINTAINERS                                   |   2 +
 arch/arm/include/asm/mach-imx/ahab.h          |   2 +-
 arch/arm/mach-imx/Kconfig                     |  13 -
 arch/arm/mach-imx/Makefile                    |   2 +-
 arch/arm/mach-imx/cmd_dek.c                   |   4 +-
 arch/arm/mach-imx/ele_ahab.c                  |   4 +-
 arch/arm/mach-imx/image-container.c           |   4 +-
 arch/arm/mach-imx/imx8/ahab.c                 |   4 +-
 arch/arm/mach-imx/spl_imx_romapi.c            |   8 +-
 arch/sandbox/cpu/spl.c                        |   4 +
 arch/sandbox/cpu/start.c                      |   9 +-
 arch/sandbox/cpu/u-boot-spl.lds               |   2 +
 arch/sandbox/include/asm/spl.h                |   3 +
 common/spl/Kconfig                            |  15 +
 common/spl/Makefile                           |   1 +
 common/spl/spl.c                              |   4 +-
 common/spl/spl_blk_fs.c                       |   6 +-
 common/spl/spl_ext.c                          |   4 +-
 common/spl/spl_fat.c                          |  16 +-
 common/spl/spl_fit.c                          |  39 +-
 .../spl/spl_imx_container.c                   |  13 +-
 common/spl/spl_legacy.c                       |   8 +-
 common/spl/spl_mmc.c                          |  16 +-
 common/spl/spl_nand.c                         |   4 +-
 common/spl/spl_net.c                          |  10 +-
 common/spl/spl_nor.c                          |  18 +-
 common/spl/spl_spi.c                          |  18 +-
 configs/deneb_defconfig                       |   2 +
 configs/giedi_defconfig                       |   2 +
 configs/imx8qm_mek_defconfig                  |   2 +
 configs/imx8qxp_mek_defconfig                 |   2 +
 configs/sandbox_noinst_defconfig              |  31 +-
 configs/sandbox_spl_defconfig                 |   8 +
 configs/sandbox_vpl_defconfig                 |   1 +
 drivers/core/Makefile                         |   1 +
 drivers/core/root.c                           |   2 +-
 drivers/i2c/Makefile                          |   2 +-
 drivers/i2c/i2c-emul-uclass.c                 |   2 +-
 drivers/serial/sandbox.c                      |   2 +-
 drivers/sysreset/sysreset_sandbox.c           |   2 +-
 drivers/usb/gadget/f_sdp.c                    |   4 +-
 dts/Kconfig                                   |   8 +-
 fs/fs.c                                       |   2 +-
 include/configs/sandbox.h                     |   3 +
 include/ext4fs.h                              |   1 +
 include/ext_common.h                          |  14 +
 .../image.h => include/imx_container.h        |   9 +
 include/spl.h                                 |  36 +
 include/test/spl.h                            | 155 ++++
 lib/Kconfig                                   |   6 +
 lib/Makefile                                  |   1 +
 net/Makefile                                  |   4 +-
 net/bootp.c                                   |   9 +-
 net/bootp.h                                   |   3 +
 net/net.c                                     |   4 +-
 test/Kconfig                                  |   1 +
 test/Makefile                                 |   5 +-
 test/image/Kconfig                            |  50 ++
 test/image/Makefile                           |   7 +-
 test/image/spl_load.c                         | 690 ++++++++++++++++--
 test/image/spl_load_fs.c                      | 428 +++++++++++
 test/image/spl_load_net.c                     | 252 +++++++
 test/image/spl_load_nor.c                     |  39 +
 test/image/spl_load_os.c                      |  76 ++
 test/image/spl_load_spi.c                     |  41 ++
 test/py/tests/test_spl.py                     |  10 +
 test/test-main.c                              |   2 +-
 69 files changed, 2000 insertions(+), 163 deletions(-)
 rename arch/arm/mach-imx/parse-container.c => common/spl/spl_imx_container.c (91%)
 rename arch/arm/include/asm/mach-imx/image.h => include/imx_container.h (82%)
 create mode 100644 include/test/spl.h
 create mode 100644 test/image/Kconfig
 create mode 100644 test/image/spl_load_fs.c
 create mode 100644 test/image/spl_load_net.c
 create mode 100644 test/image/spl_load_nor.c
 create mode 100644 test/image/spl_load_os.c
 create mode 100644 test/image/spl_load_spi.c

-- 
2.37.1


^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2023-10-18 12:31 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-14 20:47 [PATCH v2 00/29] test: spl: Test some load methods Sean Anderson
2023-10-14 20:47 ` [PATCH v2 01/29] spl: legacy: Fix referencing _image_binary_end Sean Anderson
2023-10-14 20:47 ` [PATCH v2 02/29] spl: nor: Don't allocate header on stack Sean Anderson
2023-10-14 20:47 ` [PATCH v2 03/29] spl: fit: Fix entry point for SPL_LOAD_FIT_FULL Sean Anderson
2023-10-14 20:47 ` [PATCH v2 04/29] arm: imx: Fix i.MX8 container load address Sean Anderson
2023-10-14 20:47 ` [PATCH v2 05/29] arm: imx: Add newlines after error messages Sean Anderson
2023-10-14 20:47 ` [PATCH v2 06/29] arm: imx: Use log_err for errors in read_auth_container Sean Anderson
2023-10-14 20:47 ` [PATCH v2 07/29] arm: imx: Add function to validate i.MX8 containers Sean Anderson
2023-10-14 20:47 ` [PATCH v2 08/29] arm: imx: Check header before calling spl_load_imx_container Sean Anderson
2023-10-14 20:47 ` [PATCH v2 09/29] Move i.MX8 container image loading support to common/spl Sean Anderson
2023-10-14 20:47 ` [PATCH v2 10/29] spl: Allow enabling SPL_OF_REAL and SPL_OF_PLATDATA at the same time Sean Anderson
2023-10-14 20:47 ` [PATCH v2 11/29] lib: acpi: Fix linking SPL when ACPIGEN is enabled Sean Anderson
2023-10-14 20:47 ` [PATCH v2 12/29] fs: Disable sandbox filesystem in SPL Sean Anderson
2023-10-14 21:14   ` Heinrich Schuchardt
2023-10-14 21:24     ` Sean Anderson
2023-10-14 21:45   ` Simon Glass
2023-10-14 20:47 ` [PATCH v2 13/29] fs: ext4: Fix building ext4 in SPL if write is enabled Sean Anderson
2023-10-14 20:47 ` [PATCH v2 14/29] fs: ext4: Add some defines for testing Sean Anderson
2023-10-14 23:35   ` Simon Glass
2023-10-14 20:47 ` [PATCH v2 15/29] net: Fix compiling SPL when fastboot is enabled Sean Anderson
2023-10-14 20:47 ` [PATCH v2 16/29] net: bootp: Move port numbers to header Sean Anderson
2023-10-14 21:20   ` Heinrich Schuchardt
2023-10-14 21:22     ` Tom Rini
2023-10-14 20:47 ` [PATCH v2 17/29] net: bootp: Fall back to BOOTP from DHCP when unit testing Sean Anderson
2023-10-14 21:22   ` Heinrich Schuchardt
2023-10-14 21:27     ` Sean Anderson
2023-10-15 14:39       ` Simon Glass
2023-10-15 19:20         ` Tom Rini
2023-10-14 20:47 ` [PATCH v2 18/29] spl: Add callbacks to invalidate cached devices Sean Anderson
2023-10-14 20:47 ` [PATCH v2 19/29] spl: Use map_sysmem where appropriate Sean Anderson
2023-10-14 20:47 ` [PATCH v2 20/29] sandbox: Support -T in spl Sean Anderson
2023-10-14 23:35   ` Simon Glass
2023-10-14 20:47 ` [PATCH v2 21/29] test: spl: Split tests up and use some configs Sean Anderson
2023-10-14 20:47 ` [PATCH v2 22/29] test: spl: Fix spl_test_load not failing if fname doesn't exist Sean Anderson
2023-10-14 20:47 ` [PATCH v2 23/29] test: spl: Add functions to create images Sean Anderson
2023-10-14 20:48 ` [PATCH v2 24/29] test: spl: Add functions to create filesystems Sean Anderson
2023-10-14 23:35   ` Simon Glass
2023-10-14 20:48 ` [PATCH v2 25/29] test: spl: Add a test for spl_blk_load_image Sean Anderson
2023-10-14 20:48 ` [PATCH v2 26/29] test: spl: Add a test for the MMC load method Sean Anderson
2023-10-14 20:48 ` [PATCH v2 27/29] test: spl: Add a test for the NET " Sean Anderson
2023-10-14 20:48 ` [PATCH v2 28/29] test: spl: Add a test for the NOR " Sean Anderson
2023-10-14 20:48 ` [PATCH v2 29/29] test: spl: Add a test for the SPI " Sean Anderson
2023-10-18 12:30 ` [PATCH v2 00/29] test: spl: Test some load methods Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox