public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH 0/7] Introduce SQUASHFS support in SPL
@ 2026-03-13 10:42 Richard Genoud
  2026-03-13 10:42 ` [PATCH 1/7] fs/squashfs: fix sqfs_decompressor.c build " Richard Genoud
                   ` (9 more replies)
  0 siblings, 10 replies; 13+ messages in thread
From: Richard Genoud @ 2026-03-13 10:42 UTC (permalink / raw)
  To: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot, Richard Genoud

SquashFS has support in U-Boot, but not in SPL.

This series adds the possibility for the SPL to load files from SquashFS
partitions.
This is useful, for instance, when there's a SquashFS rootfs containing
U-Boot binary.

NB: falcon mode is not supported yet.

Richard Genoud (7):
  fs/squashfs: fix sqfs_decompressor.c build in SPL
  fs/squashfs: sqfs_decompressor: simplify code
  fs/squashfs: squashfs.h: include file should be self dependent
  spl: add squashfs support
  spl: mmc: support squashfs
  MAINTAINERS: SQUASHFS: update João Marcos Costa email
  MAINTAINERS: SQUASHFS: Add myself as co-maintainer

 MAINTAINERS                     |  6 ++-
 common/spl/Makefile             |  1 +
 common/spl/spl_mmc.c            | 19 +++++---
 common/spl/spl_squashfs.c       | 78 +++++++++++++++++++++++++++++++++
 fs/squashfs/sqfs.c              | 12 +++--
 fs/squashfs/sqfs_decompressor.c | 71 ++++++++++--------------------
 include/part.h                  |  1 +
 include/spl.h                   |  6 +++
 include/squashfs.h              |  5 ++-
 9 files changed, 135 insertions(+), 64 deletions(-)
 create mode 100644 common/spl/spl_squashfs.c


base-commit: ba7bf918dafcd093ad733b07ba490baeb20cf5da

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

* [PATCH 1/7] fs/squashfs: fix sqfs_decompressor.c build in SPL
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
@ 2026-03-13 10:42 ` Richard Genoud
  2026-03-13 10:42 ` [PATCH 2/7] fs/squashfs: sqfs_decompressor: simplify code Richard Genoud
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Richard Genoud @ 2026-03-13 10:42 UTC (permalink / raw)
  To: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot, Richard Genoud

CONFIG_IS_ENABLED() must be used in place of IS_ENABLED() for config
options that have a _SPL_ counterpart.

Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
---
 fs/squashfs/sqfs_decompressor.c | 36 ++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/fs/squashfs/sqfs_decompressor.c b/fs/squashfs/sqfs_decompressor.c
index cfd1153fd74a..d54f087274c3 100644
--- a/fs/squashfs/sqfs_decompressor.c
+++ b/fs/squashfs/sqfs_decompressor.c
@@ -10,19 +10,19 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#if IS_ENABLED(CONFIG_LZO)
+#if CONFIG_IS_ENABLED(LZO)
 #include <linux/lzo.h>
 #endif
 
-#if IS_ENABLED(CONFIG_ZLIB)
+#if CONFIG_IS_ENABLED(ZLIB)
 #include <u-boot/zlib.h>
 #endif
 
-#if IS_ENABLED(CONFIG_LZ4)
+#if CONFIG_IS_ENABLED(LZ4)
 #include <u-boot/lz4.h>
 #endif
 
-#if IS_ENABLED(CONFIG_ZSTD)
+#if CONFIG_IS_ENABLED(ZSTD)
 #include <linux/zstd.h>
 #endif
 
@@ -34,19 +34,19 @@ int sqfs_decompressor_init(struct squashfs_ctxt *ctxt)
 	u16 comp_type = get_unaligned_le16(&ctxt->sblk->compression);
 
 	switch (comp_type) {
-#if IS_ENABLED(CONFIG_LZO)
+#if CONFIG_IS_ENABLED(LZO)
 	case SQFS_COMP_LZO:
 		break;
 #endif
-#if IS_ENABLED(CONFIG_ZLIB)
+#if CONFIG_IS_ENABLED(ZLIB)
 	case SQFS_COMP_ZLIB:
 		break;
 #endif
-#if IS_ENABLED(CONFIG_LZ4)
+#if CONFIG_IS_ENABLED(LZ4)
 	case SQFS_COMP_LZ4:
 		break;
 #endif
-#if IS_ENABLED(CONFIG_ZSTD)
+#if CONFIG_IS_ENABLED(ZSTD)
 	case SQFS_COMP_ZSTD:
 		ctxt->zstd_workspace = malloc(zstd_dctx_workspace_bound());
 		if (!ctxt->zstd_workspace)
@@ -66,19 +66,19 @@ void sqfs_decompressor_cleanup(struct squashfs_ctxt *ctxt)
 	u16 comp_type = get_unaligned_le16(&ctxt->sblk->compression);
 
 	switch (comp_type) {
-#if IS_ENABLED(CONFIG_LZO)
+#if CONFIG_IS_ENABLED(LZO)
 	case SQFS_COMP_LZO:
 		break;
 #endif
-#if IS_ENABLED(CONFIG_ZLIB)
+#if CONFIG_IS_ENABLED(ZLIB)
 	case SQFS_COMP_ZLIB:
 		break;
 #endif
-#if IS_ENABLED(CONFIG_LZ4)
+#if CONFIG_IS_ENABLED(LZ4)
 	case SQFS_COMP_LZ4:
 		break;
 #endif
-#if IS_ENABLED(CONFIG_ZSTD)
+#if CONFIG_IS_ENABLED(ZSTD)
 	case SQFS_COMP_ZSTD:
 		free(ctxt->zstd_workspace);
 		break;
@@ -86,7 +86,7 @@ void sqfs_decompressor_cleanup(struct squashfs_ctxt *ctxt)
 	}
 }
 
-#if IS_ENABLED(CONFIG_ZLIB)
+#if CONFIG_IS_ENABLED(ZLIB)
 static void zlib_decompression_status(int ret)
 {
 	switch (ret) {
@@ -103,7 +103,7 @@ static void zlib_decompression_status(int ret)
 }
 #endif
 
-#if IS_ENABLED(CONFIG_ZSTD)
+#if CONFIG_IS_ENABLED(ZSTD)
 static int sqfs_zstd_decompress(struct squashfs_ctxt *ctxt, void *dest,
 				unsigned long dest_len, void *source, u32 src_len)
 {
@@ -129,7 +129,7 @@ int sqfs_decompress(struct squashfs_ctxt *ctxt, void *dest,
 	int ret = 0;
 
 	switch (comp_type) {
-#if IS_ENABLED(CONFIG_LZO)
+#if CONFIG_IS_ENABLED(LZO)
 	case SQFS_COMP_LZO: {
 		size_t lzo_dest_len = *dest_len;
 		ret = lzo1x_decompress_safe(source, src_len, dest, &lzo_dest_len);
@@ -141,7 +141,7 @@ int sqfs_decompress(struct squashfs_ctxt *ctxt, void *dest,
 		break;
 	}
 #endif
-#if IS_ENABLED(CONFIG_ZLIB)
+#if CONFIG_IS_ENABLED(ZLIB)
 	case SQFS_COMP_ZLIB:
 		ret = uncompress(dest, dest_len, source, src_len);
 		if (ret) {
@@ -151,7 +151,7 @@ int sqfs_decompress(struct squashfs_ctxt *ctxt, void *dest,
 
 		break;
 #endif
-#if IS_ENABLED(CONFIG_LZ4)
+#if CONFIG_IS_ENABLED(LZ4)
 	case SQFS_COMP_LZ4:
 		ret = LZ4_decompress_safe(source, dest, src_len, *dest_len);
 		if (ret < 0) {
@@ -162,7 +162,7 @@ int sqfs_decompress(struct squashfs_ctxt *ctxt, void *dest,
 		ret = 0;
 		break;
 #endif
-#if IS_ENABLED(CONFIG_ZSTD)
+#if CONFIG_IS_ENABLED(ZSTD)
 	case SQFS_COMP_ZSTD:
 		ret = sqfs_zstd_decompress(ctxt, dest, *dest_len, source, src_len);
 		if (ret) {

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

* [PATCH 2/7] fs/squashfs: sqfs_decompressor: simplify code
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
  2026-03-13 10:42 ` [PATCH 1/7] fs/squashfs: fix sqfs_decompressor.c build " Richard Genoud
@ 2026-03-13 10:42 ` Richard Genoud
  2026-03-13 10:42 ` [PATCH 3/7] fs/squashfs: squashfs.h: include file should be self dependent Richard Genoud
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Richard Genoud @ 2026-03-13 10:42 UTC (permalink / raw)
  To: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot, Richard Genoud

Switch to if (CONFIG_IS_ENABLED()) instead of #if when possible and
remove unnecessary cases.

Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
---
 fs/squashfs/sqfs_decompressor.c | 49 ++++++++-------------------------
 1 file changed, 12 insertions(+), 37 deletions(-)

diff --git a/fs/squashfs/sqfs_decompressor.c b/fs/squashfs/sqfs_decompressor.c
index d54f087274c3..a156cfe6f65a 100644
--- a/fs/squashfs/sqfs_decompressor.c
+++ b/fs/squashfs/sqfs_decompressor.c
@@ -33,57 +33,32 @@ int sqfs_decompressor_init(struct squashfs_ctxt *ctxt)
 {
 	u16 comp_type = get_unaligned_le16(&ctxt->sblk->compression);
 
-	switch (comp_type) {
-#if CONFIG_IS_ENABLED(LZO)
-	case SQFS_COMP_LZO:
-		break;
-#endif
-#if CONFIG_IS_ENABLED(ZLIB)
-	case SQFS_COMP_ZLIB:
-		break;
-#endif
-#if CONFIG_IS_ENABLED(LZ4)
-	case SQFS_COMP_LZ4:
-		break;
-#endif
+	if (((CONFIG_IS_ENABLED(LZO) && comp_type == SQFS_COMP_LZO)) ||
+	    ((CONFIG_IS_ENABLED(ZLIB) && comp_type == SQFS_COMP_ZLIB)) ||
+	    ((CONFIG_IS_ENABLED(LZ4) && comp_type == SQFS_COMP_LZ4)))
+		return 0;
+
 #if CONFIG_IS_ENABLED(ZSTD)
-	case SQFS_COMP_ZSTD:
+	if (comp_type == SQFS_COMP_ZSTD) {
 		ctxt->zstd_workspace = malloc(zstd_dctx_workspace_bound());
 		if (!ctxt->zstd_workspace)
 			return -ENOMEM;
-		break;
-#endif
-	default:
-		printf("Error: unknown compression type.\n");
-		return -EINVAL;
+		return 0;
 	}
+#endif
 
-	return 0;
+	printf("Error: unknown compression type.\n");
+	return -EINVAL;
 }
 
 void sqfs_decompressor_cleanup(struct squashfs_ctxt *ctxt)
 {
+#if CONFIG_IS_ENABLED(ZSTD)
 	u16 comp_type = get_unaligned_le16(&ctxt->sblk->compression);
 
-	switch (comp_type) {
-#if CONFIG_IS_ENABLED(LZO)
-	case SQFS_COMP_LZO:
-		break;
-#endif
-#if CONFIG_IS_ENABLED(ZLIB)
-	case SQFS_COMP_ZLIB:
-		break;
-#endif
-#if CONFIG_IS_ENABLED(LZ4)
-	case SQFS_COMP_LZ4:
-		break;
-#endif
-#if CONFIG_IS_ENABLED(ZSTD)
-	case SQFS_COMP_ZSTD:
+	if (comp_type == SQFS_COMP_ZSTD)
 		free(ctxt->zstd_workspace);
-		break;
 #endif
-	}
 }
 
 #if CONFIG_IS_ENABLED(ZLIB)

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

* [PATCH 3/7] fs/squashfs: squashfs.h: include file should be self dependent
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
  2026-03-13 10:42 ` [PATCH 1/7] fs/squashfs: fix sqfs_decompressor.c build " Richard Genoud
  2026-03-13 10:42 ` [PATCH 2/7] fs/squashfs: sqfs_decompressor: simplify code Richard Genoud
@ 2026-03-13 10:42 ` Richard Genoud
  2026-03-13 15:15   ` Tom Rini
  2026-03-13 10:42 ` [PATCH 4/7] spl: add squashfs support Richard Genoud
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 13+ messages in thread
From: Richard Genoud @ 2026-03-13 10:42 UTC (permalink / raw)
  To: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot, Richard Genoud

Otherwise, we get a lot of errors when including this file.

Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
---
 include/squashfs.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/squashfs.h b/include/squashfs.h
index 7489eefa1f2f..83ed8a494428 100644
--- a/include/squashfs.h
+++ b/include/squashfs.h
@@ -10,7 +10,10 @@
 #ifndef _SQFS_H_
 #define _SQFS_H_
 
-struct disk_partition;
+#include <fs.h>
+#include <blk.h>
+#include <part.h>
+#include <linux/types.h>
 
 int sqfs_opendir(const char *filename, struct fs_dir_stream **dirsp);
 int sqfs_readdir(struct fs_dir_stream *dirs, struct fs_dirent **dentp);

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

* [PATCH 4/7] spl: add squashfs support
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
                   ` (2 preceding siblings ...)
  2026-03-13 10:42 ` [PATCH 3/7] fs/squashfs: squashfs.h: include file should be self dependent Richard Genoud
@ 2026-03-13 10:42 ` Richard Genoud
  2026-03-13 10:42 ` [PATCH 5/7] spl: mmc: support squashfs Richard Genoud
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Richard Genoud @ 2026-03-13 10:42 UTC (permalink / raw)
  To: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot, Richard Genoud

Implement spl_load_image_sqfs() in spl code.

This will be used in MMC to read a file from a squashfs partition.

Also, loosen squashfs read checks on file size by not failing when a
bigger size than the actual file size is requested. (Just read the file)
This is needed for FIT loading, because the length is ALIGNed.

Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
---
 common/spl/Makefile       |  1 +
 common/spl/spl_squashfs.c | 78 +++++++++++++++++++++++++++++++++++++++
 fs/squashfs/sqfs.c        | 12 +++---
 include/part.h            |  1 +
 include/spl.h             |  6 +++
 5 files changed, 91 insertions(+), 7 deletions(-)
 create mode 100644 common/spl/spl_squashfs.c

diff --git a/common/spl/Makefile b/common/spl/Makefile
index 4c9482bd3096..53cc45fc5b9b 100644
--- a/common/spl/Makefile
+++ b/common/spl/Makefile
@@ -29,6 +29,7 @@ obj-$(CONFIG_$(PHASE_)OPENSBI) += spl_opensbi.o
 obj-$(CONFIG_$(PHASE_)USB_STORAGE) += spl_usb.o
 obj-$(CONFIG_$(PHASE_)FS_FAT) += spl_fat.o
 obj-$(CONFIG_$(PHASE_)FS_EXT4) += spl_ext.o
+obj-$(CONFIG_$(PHASE_)FS_SQUASHFS) += spl_squashfs.o
 obj-$(CONFIG_$(PHASE_)LOAD_IMX_CONTAINER) += spl_imx_container.o
 obj-$(CONFIG_$(PHASE_)SATA) += spl_sata.o
 obj-$(CONFIG_$(PHASE_)NVME) += spl_nvme.o
diff --git a/common/spl/spl_squashfs.c b/common/spl/spl_squashfs.c
new file mode 100644
index 000000000000..d3b1c70bfc45
--- /dev/null
+++ b/common/spl/spl_squashfs.c
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2020 Paratronic
+ * Copyright (C) 2026 Bootlin
+ *
+ * Author: Richard Genoud <richard.genoud@bootlin.com>
+ *
+ */
+
+#include <env.h>
+#include <part.h>
+#include <spl.h>
+#include <spl_load.h>
+#include <squashfs.h>
+#include <errno.h>
+#include <image.h>
+
+static ulong spl_fit_read(struct spl_load_info *load, ulong file_offset,
+			  ulong size, void *buf)
+{
+	struct legacy_img_hdr *header;
+	char *filename = load->priv;
+	loff_t actread;
+	int ret;
+
+	ret = sqfs_read(filename, buf, file_offset, size, &actread);
+	if (ret)
+		return ret;
+
+	if (CONFIG_IS_ENABLED(OS_BOOT)) {
+		header = (struct legacy_img_hdr *)buf;
+		if (image_get_magic(header) != FDT_MAGIC)
+			return size;
+	}
+
+	return actread;
+}
+
+int spl_load_image_sqfs(struct spl_image_info *spl_image,
+			struct spl_boot_device *bootdev,
+			struct blk_desc *block_dev, int partition,
+			const char *filename)
+{
+	int err;
+	loff_t size = 0;
+	struct spl_load_info load;
+	struct disk_partition part_info = {};
+
+	err = part_get_info(block_dev, partition, &part_info);
+	if (err) {
+		printf("spl: no partition table found\n");
+		goto end;
+	}
+
+	err = sqfs_probe(block_dev, &part_info);
+	if (err) {
+		printf("spl: sqfs probe err part_name:%s type=%s err=%d\n",
+		       part_info.name, part_info.type, err);
+		goto end;
+	}
+
+	if (IS_ENABLED(CONFIG_SPL_LOAD_FIT_FULL)) {
+		err = sqfs_size(filename, &size);
+		if (err)
+			goto end;
+	}
+
+	spl_load_init(&load, spl_fit_read, (void *)filename, 1);
+
+	err = spl_load(spl_image, bootdev, &load, size, 0);
+
+end:
+	if (err < 0)
+		printf("%s: error reading image %s, err - %d\n",
+		       __func__, filename, err);
+
+	return err;
+}
diff --git a/fs/squashfs/sqfs.c b/fs/squashfs/sqfs.c
index 9cb8b4afcddb..543db8c7e9ec 100644
--- a/fs/squashfs/sqfs.c
+++ b/fs/squashfs/sqfs.c
@@ -1490,13 +1490,11 @@ static int sqfs_read_nest(const char *filename, void *buf, loff_t offset,
 		goto out;
 	}
 
-	/* If the user specifies a length, check its sanity */
-	if (len) {
-		if (len > finfo.size) {
-			ret = -EINVAL;
-			goto out;
-		}
-
+	/*
+	 * For FIT loading, the len is ALIGN, so it may exceed the actual size.
+	 * Let's just read the max.
+	 */
+	if (len && len < finfo.size) {
 		finfo.size = len;
 	} else {
 		len = finfo.size;
diff --git a/include/part.h b/include/part.h
index daebbbc2e68f..9679521825f7 100644
--- a/include/part.h
+++ b/include/part.h
@@ -461,6 +461,7 @@ ulong disk_blk_erase(struct udevice *dev, lbaint_t start, lbaint_t blkcnt);
 #ifdef CONFIG_XPL_BUILD
 # define part_print_ptr(x)	NULL
 # if defined(CONFIG_SPL_FS_EXT4) || defined(CONFIG_SPL_FS_FAT) || \
+	defined(CONFIG_SPL_FS_SQUASHFS) || \
 	defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION) || \
 	defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE)
 #  define part_get_info_ptr(x)	x
diff --git a/include/spl.h b/include/spl.h
index 06dc28362d3f..5078d7525abb 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -882,6 +882,12 @@ int spl_blk_load_image(struct spl_image_info *spl_image,
 		       struct spl_boot_device *bootdev,
 		       enum uclass_id uclass_id, int devnum, int partnum);
 
+/* SPL SQUASHFS image functions */
+int spl_load_image_sqfs(struct spl_image_info *spl_image,
+			struct spl_boot_device *bootdev,
+			struct blk_desc *block_dev, int partition,
+			const char *filename);
+
 /**
  * spl_early_init() - Set up device tree and driver model in SPL if enabled
  *

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

* [PATCH 5/7] spl: mmc: support squashfs
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
                   ` (3 preceding siblings ...)
  2026-03-13 10:42 ` [PATCH 4/7] spl: add squashfs support Richard Genoud
@ 2026-03-13 10:42 ` Richard Genoud
  2026-03-13 10:42 ` [PATCH 6/7] MAINTAINERS: SQUASHFS: update João Marcos Costa email Richard Genoud
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Richard Genoud @ 2026-03-13 10:42 UTC (permalink / raw)
  To: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot, Richard Genoud

spl_mmc_do_fs_boot supports now loading an image from squashfs.

Also, convert #if defined(CONFIG_SPL_xx) to if (CONFIG_IS_ENABLED(xx))

Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
---
 common/spl/spl_mmc.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index 47cfe4aef58f..cc16709dc9b1 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -226,6 +226,11 @@ static int __maybe_unused spl_mmc_fs_load(struct spl_image_info *spl_image,
 		if (!err)
 			return 0;
 	}
+	if (CONFIG_IS_ENABLED(FS_SQUASHFS)) {
+		err = spl_load_image_sqfs(spl_image, bootdev, blk_dev, part, file);
+		if (!err)
+			return 0;
+	}
 
 	return err;
 }
@@ -284,13 +289,15 @@ static int spl_mmc_do_fs_boot(struct spl_image_info *spl_image,
 
 u32 __weak spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
 {
-#if defined(CONFIG_SPL_FS_FAT) || defined(CONFIG_SPL_FS_EXT4)
-	return MMCSD_MODE_FS;
-#elif defined(CONFIG_SUPPORT_EMMC_BOOT)
-	return MMCSD_MODE_EMMCBOOT;
-#else
+	if (CONFIG_IS_ENABLED(FS_FAT) ||
+	    CONFIG_IS_ENABLED(FS_EXT4) ||
+	    CONFIG_IS_ENABLED(FS_SQUASHFS))
+		return MMCSD_MODE_FS;
+
+	if (IS_ENABLED(CONFIG_SUPPORT_EMMC_BOOT))
+		return MMCSD_MODE_EMMCBOOT;
+
 	return MMCSD_MODE_RAW;
-#endif
 }
 
 #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION

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

* [PATCH 6/7] MAINTAINERS: SQUASHFS: update João Marcos Costa email
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
                   ` (4 preceding siblings ...)
  2026-03-13 10:42 ` [PATCH 5/7] spl: mmc: support squashfs Richard Genoud
@ 2026-03-13 10:42 ` Richard Genoud
  2026-03-13 10:42 ` [PATCH 7/7] MAINTAINERS: SQUASHFS: Add myself as co-maintainer Richard Genoud
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Richard Genoud @ 2026-03-13 10:42 UTC (permalink / raw)
  To: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot, Richard Genoud

João is using his Bootlin address now.

Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
---
 MAINTAINERS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index d2040fee2523..73be3d545fb0 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1768,7 +1768,7 @@ F:	drivers/spmi/
 F:	include/spmi/
 
 SQUASHFS
-M:	Joao Marcos Costa <jmcosta944@gmail.com>
+M:	Joao Marcos Costa <joaomarcos.costa@bootlin.com>
 R:	Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 R:	Miquel Raynal <miquel.raynal@bootlin.com>
 S:	Maintained

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

* [PATCH 7/7] MAINTAINERS: SQUASHFS: Add myself as co-maintainer
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
                   ` (5 preceding siblings ...)
  2026-03-13 10:42 ` [PATCH 6/7] MAINTAINERS: SQUASHFS: update João Marcos Costa email Richard Genoud
@ 2026-03-13 10:42 ` Richard Genoud
  2026-03-13 15:17   ` Tom Rini
  2026-03-16  9:38 ` [PATCH 0/7] Introduce SQUASHFS support in SPL Joao Marcos Costa
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 13+ messages in thread
From: Richard Genoud @ 2026-03-13 10:42 UTC (permalink / raw)
  To: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot, Richard Genoud

I propose myself to maintain the squashfs files with João.

Also, reorder patterns in alphabetical order.

Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
---
 MAINTAINERS | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 73be3d545fb0..e9b04bbfea59 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1769,12 +1769,14 @@ F:	include/spmi/
 
 SQUASHFS
 M:	Joao Marcos Costa <joaomarcos.costa@bootlin.com>
+M:	Richard Genoud <richard.genoud@bootlin.com>
 R:	Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 R:	Miquel Raynal <miquel.raynal@bootlin.com>
 S:	Maintained
+F:	cmd/sqfs.c
+F:	common/spl/spl_squashfs.c
 F:	fs/squashfs/
 F:	include/sqfs.h
-F:	cmd/sqfs.c
 F:	test/py/tests/test_fs/test_squashfs/
 
 STACKPROTECTOR

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

* Re: [PATCH 3/7] fs/squashfs: squashfs.h: include file should be self dependent
  2026-03-13 10:42 ` [PATCH 3/7] fs/squashfs: squashfs.h: include file should be self dependent Richard Genoud
@ 2026-03-13 15:15   ` Tom Rini
  0 siblings, 0 replies; 13+ messages in thread
From: Tom Rini @ 2026-03-13 15:15 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Peng Fan, Jaehoon Chung, Joao Marcos Costa, Thomas Petazzoni,
	Miquel Raynal, u-boot

[-- Attachment #1: Type: text/plain, Size: 254 bytes --]

On Fri, Mar 13, 2026 at 11:42:25AM +0100, Richard Genoud wrote:

> Otherwise, we get a lot of errors when including this file.
> 
> Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH 7/7] MAINTAINERS: SQUASHFS: Add myself as co-maintainer
  2026-03-13 10:42 ` [PATCH 7/7] MAINTAINERS: SQUASHFS: Add myself as co-maintainer Richard Genoud
@ 2026-03-13 15:17   ` Tom Rini
  0 siblings, 0 replies; 13+ messages in thread
From: Tom Rini @ 2026-03-13 15:17 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Peng Fan, Jaehoon Chung, Joao Marcos Costa, Thomas Petazzoni,
	Miquel Raynal, u-boot

[-- Attachment #1: Type: text/plain, Size: 306 bytes --]

On Fri, Mar 13, 2026 at 11:42:29AM +0100, Richard Genoud wrote:

> I propose myself to maintain the squashfs files with João.
> 
> Also, reorder patterns in alphabetical order.
> 
> Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH 0/7] Introduce SQUASHFS support in SPL
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
                   ` (6 preceding siblings ...)
  2026-03-13 10:42 ` [PATCH 7/7] MAINTAINERS: SQUASHFS: Add myself as co-maintainer Richard Genoud
@ 2026-03-16  9:38 ` Joao Marcos Costa
  2026-03-16 16:22 ` Miquel Raynal
  2026-03-26 18:31 ` Tom Rini
  9 siblings, 0 replies; 13+ messages in thread
From: Joao Marcos Costa @ 2026-03-16  9:38 UTC (permalink / raw)
  To: Richard Genoud, Tom Rini, Peng Fan, Jaehoon Chung
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot

Hello, folks

Thanks for the series, Richard!

On 3/13/26 11:42, Richard Genoud wrote:
> SquashFS has support in U-Boot, but not in SPL.
> 
> This series adds the possibility for the SPL to load files from SquashFS
> partitions.
> This is useful, for instance, when there's a SquashFS rootfs containing
> U-Boot binary.
> 
> NB: falcon mode is not supported yet.
> 
> Richard Genoud (7):
>    fs/squashfs: fix sqfs_decompressor.c build in SPL
>    fs/squashfs: sqfs_decompressor: simplify code
>    fs/squashfs: squashfs.h: include file should be self dependent
>    spl: add squashfs support
>    spl: mmc: support squashfs
>    MAINTAINERS: SQUASHFS: update João Marcos Costa email
>    MAINTAINERS: SQUASHFS: Add myself as co-maintainer
> 
>   MAINTAINERS                     |  6 ++-
>   common/spl/Makefile             |  1 +
>   common/spl/spl_mmc.c            | 19 +++++---
>   common/spl/spl_squashfs.c       | 78 +++++++++++++++++++++++++++++++++
>   fs/squashfs/sqfs.c              | 12 +++--
>   fs/squashfs/sqfs_decompressor.c | 71 ++++++++++--------------------
>   include/part.h                  |  1 +
>   include/spl.h                   |  6 +++
>   include/squashfs.h              |  5 ++-
>   9 files changed, 135 insertions(+), 64 deletions(-)
>   create mode 100644 common/spl/spl_squashfs.c
> 
> 
> base-commit: ba7bf918dafcd093ad733b07ba490baeb20cf5da

Reviewed-by: João Marcos Costa <joaomarcos.costa@bootlin.com>

-- 
Best regards,
João Marcos Costa

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

* Re: [PATCH 0/7] Introduce SQUASHFS support in SPL
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
                   ` (7 preceding siblings ...)
  2026-03-16  9:38 ` [PATCH 0/7] Introduce SQUASHFS support in SPL Joao Marcos Costa
@ 2026-03-16 16:22 ` Miquel Raynal
  2026-03-26 18:31 ` Tom Rini
  9 siblings, 0 replies; 13+ messages in thread
From: Miquel Raynal @ 2026-03-16 16:22 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Tom Rini, Peng Fan, Jaehoon Chung, Joao Marcos Costa,
	Thomas Petazzoni, u-boot

Hello,

On 13/03/2026 at 11:42:22 +01, Richard Genoud <richard.genoud@bootlin.com> wrote:

> SquashFS has support in U-Boot, but not in SPL.
>
> This series adds the possibility for the SPL to load files from SquashFS
> partitions.
> This is useful, for instance, when there's a SquashFS rootfs containing
> U-Boot binary.

I haven't made a deep review, but I am very enthusiastic to eventually
see this upstream, thanks Richard!

Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>

Miquèl

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

* Re: [PATCH 0/7] Introduce SQUASHFS support in SPL
  2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
                   ` (8 preceding siblings ...)
  2026-03-16 16:22 ` Miquel Raynal
@ 2026-03-26 18:31 ` Tom Rini
  9 siblings, 0 replies; 13+ messages in thread
From: Tom Rini @ 2026-03-26 18:31 UTC (permalink / raw)
  To: Peng Fan, Jaehoon Chung, Joao Marcos Costa, Richard Genoud
  Cc: Thomas Petazzoni, Miquel Raynal, u-boot

On Fri, 13 Mar 2026 11:42:22 +0100, Richard Genoud wrote:

> SquashFS has support in U-Boot, but not in SPL.
> 
> This series adds the possibility for the SPL to load files from SquashFS
> partitions.
> This is useful, for instance, when there's a SquashFS rootfs containing
> U-Boot binary.
> 
> [...]

Applied to u-boot/next, thanks!

[1/7] fs/squashfs: fix sqfs_decompressor.c build in SPL
      commit: f0b4f502bdd5f17da58aca9ebf86e16e96e0d347
[2/7] fs/squashfs: sqfs_decompressor: simplify code
      commit: 0fe2801730edb99e24b601b043ec5595af319274
[3/7] fs/squashfs: squashfs.h: include file should be self dependent
      commit: 5e23f7f9f3b3c8fe78ed3aadeed9b187ba8930da
[4/7] spl: add squashfs support
      commit: 6494e823b46ced400764b6203d7480c9e3badc20
[5/7] spl: mmc: support squashfs
      commit: fb0df3552892ff150edaf7579989fd4750ee85ee
[6/7] MAINTAINERS: SQUASHFS: update João Marcos Costa email
      commit: eed18b1e25051123804d26525d600c9d2cd76e2c
[7/7] MAINTAINERS: SQUASHFS: Add myself as co-maintainer
      commit: 868233099d873cc8e2f8b99f609bdbaed421eab7
-- 
Tom



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

end of thread, other threads:[~2026-03-26 18:31 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-13 10:42 [PATCH 0/7] Introduce SQUASHFS support in SPL Richard Genoud
2026-03-13 10:42 ` [PATCH 1/7] fs/squashfs: fix sqfs_decompressor.c build " Richard Genoud
2026-03-13 10:42 ` [PATCH 2/7] fs/squashfs: sqfs_decompressor: simplify code Richard Genoud
2026-03-13 10:42 ` [PATCH 3/7] fs/squashfs: squashfs.h: include file should be self dependent Richard Genoud
2026-03-13 15:15   ` Tom Rini
2026-03-13 10:42 ` [PATCH 4/7] spl: add squashfs support Richard Genoud
2026-03-13 10:42 ` [PATCH 5/7] spl: mmc: support squashfs Richard Genoud
2026-03-13 10:42 ` [PATCH 6/7] MAINTAINERS: SQUASHFS: update João Marcos Costa email Richard Genoud
2026-03-13 10:42 ` [PATCH 7/7] MAINTAINERS: SQUASHFS: Add myself as co-maintainer Richard Genoud
2026-03-13 15:17   ` Tom Rini
2026-03-16  9:38 ` [PATCH 0/7] Introduce SQUASHFS support in SPL Joao Marcos Costa
2026-03-16 16:22 ` Miquel Raynal
2026-03-26 18:31 ` Tom Rini

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