public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Sean Anderson <seanga2@gmail.com>
To: u-boot@lists.denx.de, Tom Rini <trini@konsulko.com>
Cc: Harald Seiler <hws@denx.de>, Simon Glass <sjg@chromium.org>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Sean Anderson <seanga2@gmail.com>,
	Mayuresh Chitale <mchitale@ventanamicro.com>
Subject: [PATCH v2 25/29] test: spl: Add a test for spl_blk_load_image
Date: Sat, 14 Oct 2023 16:48:01 -0400	[thread overview]
Message-ID: <20231014204805.439009-26-seanga2@gmail.com> (raw)
In-Reply-To: <20231014204805.439009-1-seanga2@gmail.com>

Add a test for spl_blk_load_image, currently used only by NVMe. Because
there is no sandbox NVMe driver, just use MMC instead. Avoid falling back
to raw images to make failures more obvious.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---

Changes in v2:
- Explicitly invalidate FAT block device cache before testing

 configs/sandbox_noinst_defconfig |  2 +
 test/image/Kconfig               |  3 +-
 test/image/spl_load_fs.c         | 63 ++++++++++++++++++++++++++++++++
 3 files changed, 67 insertions(+), 1 deletion(-)

diff --git a/configs/sandbox_noinst_defconfig b/configs/sandbox_noinst_defconfig
index 0a542cfb6aa..11be2dccf7d 100644
--- a/configs/sandbox_noinst_defconfig
+++ b/configs/sandbox_noinst_defconfig
@@ -34,6 +34,7 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
 CONFIG_SPL_NO_BSS_LIMIT=y
 CONFIG_HANDOFF=y
 CONFIG_SPL_BOARD_INIT=y
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
 CONFIG_SPL_LEGACY_IMAGE_FORMAT=y
 CONFIG_SPL_LOAD_IMX_CONTAINER=y
 CONFIG_SPL_SYS_MALLOC=y
@@ -123,6 +124,7 @@ CONFIG_ADC=y
 CONFIG_ADC_SANDBOX=y
 CONFIG_AXI=y
 CONFIG_AXI_SANDBOX=y
+CONFIG_SPL_BLK_FS=y
 CONFIG_SYS_IDE_MAXBUS=1
 CONFIG_SYS_ATA_BASE_ADDR=0x100
 CONFIG_SYS_ATA_STRIDE=4
diff --git a/test/image/Kconfig b/test/image/Kconfig
index 963c86cc290..a52766b77d4 100644
--- a/test/image/Kconfig
+++ b/test/image/Kconfig
@@ -14,12 +14,13 @@ config SPL_UT_LOAD_FS
 	bool "Unit tests for filesystems"
 	depends on SANDBOX && SPL_OF_REAL
 	depends on FS_LOADER
+	depends on SPL_BLK_FS
 	depends on SPL_FS_FAT
 	depends on SPL_FS_EXT4
 	depends on SPL_MMC_WRITE
 	default y
 	help
-	  Test filesystems in SPL.
+	  Test filesystems and the various load methods which use them.
 
 config SPL_UT_LOAD_OS
 	bool "Test loading from the host OS"
diff --git a/test/image/spl_load_fs.c b/test/image/spl_load_fs.c
index 0ee1ede134a..a8b45bdbc49 100644
--- a/test/image/spl_load_fs.c
+++ b/test/image/spl_load_fs.c
@@ -10,6 +10,7 @@
 #include <fat.h>
 #include <fs.h>
 #include <memalign.h>
+#include <spl.h>
 #include <asm/io.h>
 #include <linux/stat.h>
 #include <test/spl.h>
@@ -304,3 +305,65 @@ static int spl_test_fat(struct unit_test_state *uts)
 	return spl_test_fs(uts, __func__, create_fat);
 }
 SPL_TEST(spl_test_fat, DM_FLAGS);
+
+static int spl_test_mmc_fs(struct unit_test_state *uts, const char *test_name,
+			   enum spl_test_image type, create_fs_t create_fs)
+{
+	const char *filename = CONFIG_SPL_FS_LOAD_PAYLOAD_NAME;
+	struct blk_desc *dev_desc;
+	size_t fs_size, fs_data, img_size, img_data,
+	       data_size = SPL_TEST_DATA_SIZE;
+	struct spl_image_info info_write = {
+		.name = test_name,
+		.size = data_size,
+	}, info_read = { };
+	struct disk_partition part = {
+		.start = 1,
+		.sys_ind = 0x83,
+	};
+	struct spl_boot_device bootdev = { };
+	void *fs;
+	char *data;
+
+	img_size = create_image(NULL, type, &info_write, &img_data);
+	ut_assert(img_size);
+	fs_size = create_fs(NULL, img_size, filename, &fs_data);
+	ut_assert(fs_size);
+	fs = calloc(fs_size, 1);
+	ut_assertnonnull(fs);
+
+	data = fs + fs_data + img_data;
+	generate_data(data, data_size, test_name);
+	ut_asserteq(img_size, create_image(fs + fs_data, type, &info_write,
+					   NULL));
+	ut_asserteq(fs_size, create_fs(fs, img_size, filename, NULL));
+
+	dev_desc = blk_get_devnum_by_uclass_id(UCLASS_MMC, 0);
+	ut_assertnonnull(dev_desc);
+
+	ut_asserteq(512, dev_desc->blksz);
+	part.size = fs_size / dev_desc->blksz;
+	ut_assertok(write_mbr_partitions(dev_desc, &part, 1, 0));
+	ut_asserteq(part.size, blk_dwrite(dev_desc, part.start, part.size, fs));
+
+	ut_assertok(spl_blk_load_image(&info_read, &bootdev, UCLASS_MMC, 0, 1));
+	if (check_image_info(uts, &info_write, &info_read))
+		return CMD_RET_FAILURE;
+	ut_asserteq_mem(data, phys_to_virt(info_write.load_addr), data_size);
+
+	free(fs);
+	return 0;
+}
+
+static int spl_test_blk(struct unit_test_state *uts, const char *test_name,
+			enum spl_test_image type)
+{
+	spl_fat_force_reregister();
+	if (spl_test_mmc_fs(uts, test_name, type, create_fat))
+		return CMD_RET_FAILURE;
+
+	return spl_test_mmc_fs(uts, test_name, type, create_ext2);
+}
+SPL_IMG_TEST(spl_test_blk, LEGACY, DM_FLAGS);
+SPL_IMG_TEST(spl_test_blk, FIT_EXTERNAL, DM_FLAGS);
+SPL_IMG_TEST(spl_test_blk, FIT_INTERNAL, DM_FLAGS);
-- 
2.37.1


  parent reply	other threads:[~2023-10-15  6:07 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 ` Sean Anderson [this message]
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

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=20231014204805.439009-26-seanga2@gmail.com \
    --to=seanga2@gmail.com \
    --cc=hws@denx.de \
    --cc=mchitale@ventanamicro.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox