[PATCH] fs: Fix SPL build if SPL_FS_LOADER is enabled and FS_LOADER is disabled

From: Hiago De Franco hiago.franco@toradex.com
When SPL_FS_LOADER is set to y and FS_LOADER is not enabled, the SPL build fails with the following errors:
AR spl/boot/built-in.o LD spl/u-boot-spl arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `fw_get_filesystem_firmware': /u-boot/drivers/misc/fs_loader.c:162: undefined reference to `fs_set_blk_dev' arm-none-linux-gnueabihf-ld.bfd: /home/frh/tdx/src/u-boot/drivers/misc/ fs_loader.c:185: undefined reference to `fs_read' arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `select_fs_dev': /u-boot/drivers/misc/fs_loader.c:89: undefined reference to `fs_set_blk_dev_with_part' make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 make: *** [Makefile:2055: spl/u-boot-spl] Error 2
Fix it by replacing the FS_LOADER with SPL_FS_LOADER in the Makefile, so the fs.c with the necessary function definitions are compiled.
Fixes: b071a07743d4 ("drivers: misc: Makefile: Enable fs_loader compilation at SPL Level") Suggested-by: Francesco Dolcini francesco.dolcini@toradex.com Signed-off-by: Hiago De Franco hiago.franco@toradex.com --- fs/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/Makefile b/fs/Makefile index 7b05c79e0ccf..a3ee0a361d3d 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -5,7 +5,7 @@ # Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
ifdef CONFIG_SPL_BUILD -obj-$(CONFIG_FS_LOADER) += fs.o +obj-$(CONFIG_SPL_FS_LOADER) += fs.o obj-$(CONFIG_SPL_FS_FAT) += fat/ obj-$(CONFIG_SPL_FS_EXT4) += ext4/ obj-$(CONFIG_SPL_FS_CBFS) += cbfs/

On Mon, Aug 26, 2024 at 03:19:33PM -0300, Hiago De Franco wrote:
From: Hiago De Franco hiago.franco@toradex.com
When SPL_FS_LOADER is set to y and FS_LOADER is not enabled, the SPL build fails with the following errors:
AR spl/boot/built-in.o LD spl/u-boot-spl arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `fw_get_filesystem_firmware': /u-boot/drivers/misc/fs_loader.c:162: undefined reference to `fs_set_blk_dev' arm-none-linux-gnueabihf-ld.bfd: /home/frh/tdx/src/u-boot/drivers/misc/ fs_loader.c:185: undefined reference to `fs_read' arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `select_fs_dev': /u-boot/drivers/misc/fs_loader.c:89: undefined reference to `fs_set_blk_dev_with_part' make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 make: *** [Makefile:2055: spl/u-boot-spl] Error 2
Fix it by replacing the FS_LOADER with SPL_FS_LOADER in the Makefile, so the fs.c with the necessary function definitions are compiled.
Fixes: b071a07743d4 ("drivers: misc: Makefile: Enable fs_loader compilation at SPL Level") Suggested-by: Francesco Dolcini francesco.dolcini@toradex.com Signed-off-by: Hiago De Franco hiago.franco@toradex.com
Reviewed-by: Tom Rini trini@konsulko.com

On Mon, Aug 26, 2024 at 03:19:33PM -0300, Hiago De Franco wrote:
From: Hiago De Franco hiago.franco@toradex.com
When SPL_FS_LOADER is set to y and FS_LOADER is not enabled, the SPL build fails with the following errors:
AR spl/boot/built-in.o LD spl/u-boot-spl arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `fw_get_filesystem_firmware': /u-boot/drivers/misc/fs_loader.c:162: undefined reference to `fs_set_blk_dev' arm-none-linux-gnueabihf-ld.bfd: /home/frh/tdx/src/u-boot/drivers/misc/ fs_loader.c:185: undefined reference to `fs_read' arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `select_fs_dev': /u-boot/drivers/misc/fs_loader.c:89: undefined reference to `fs_set_blk_dev_with_part' make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 make: *** [Makefile:2055: spl/u-boot-spl] Error 2
Fix it by replacing the FS_LOADER with SPL_FS_LOADER in the Makefile, so the fs.c with the necessary function definitions are compiled.
Fixes: b071a07743d4 ("drivers: misc: Makefile: Enable fs_loader compilation at SPL Level") Suggested-by: Francesco Dolcini francesco.dolcini@toradex.com Signed-off-by: Hiago De Franco hiago.franco@toradex.com Reviewed-by: Tom Rini trini@konsulko.com
This leads to failure to build on sandbox_noinst_defconfig.
fs/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/Makefile b/fs/Makefile index 7b05c79e0ccf..a3ee0a361d3d 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -5,7 +5,7 @@ # Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
ifdef CONFIG_SPL_BUILD -obj-$(CONFIG_FS_LOADER) += fs.o +obj-$(CONFIG_SPL_FS_LOADER) += fs.o obj-$(CONFIG_SPL_FS_FAT) += fat/ obj-$(CONFIG_SPL_FS_EXT4) += ext4/ obj-$(CONFIG_SPL_FS_CBFS) += cbfs/

On Fri, Aug 30, 2024 at 02:51:19PM -0600, Tom Rini wrote:
On Mon, Aug 26, 2024 at 03:19:33PM -0300, Hiago De Franco wrote:
From: Hiago De Franco hiago.franco@toradex.com
When SPL_FS_LOADER is set to y and FS_LOADER is not enabled, the SPL build fails with the following errors:
AR spl/boot/built-in.o LD spl/u-boot-spl arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `fw_get_filesystem_firmware': /u-boot/drivers/misc/fs_loader.c:162: undefined reference to `fs_set_blk_dev' arm-none-linux-gnueabihf-ld.bfd: /home/frh/tdx/src/u-boot/drivers/misc/ fs_loader.c:185: undefined reference to `fs_read' arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `select_fs_dev': /u-boot/drivers/misc/fs_loader.c:89: undefined reference to `fs_set_blk_dev_with_part' make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 make: *** [Makefile:2055: spl/u-boot-spl] Error 2
Fix it by replacing the FS_LOADER with SPL_FS_LOADER in the Makefile, so the fs.c with the necessary function definitions are compiled.
Fixes: b071a07743d4 ("drivers: misc: Makefile: Enable fs_loader compilation at SPL Level") Suggested-by: Francesco Dolcini francesco.dolcini@toradex.com Signed-off-by: Hiago De Franco hiago.franco@toradex.com Reviewed-by: Tom Rini trini@konsulko.com
This leads to failure to build on sandbox_noinst_defconfig.
--- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -110,6 +110,7 @@ config EFI_MEDIA config SPL_BLK_FS bool "Load images from filesystems on block devices" depends on SPL_BLK + select SPL_FS_LOADER help Use generic support to load images from fat/ext filesystems on different types of block devices such as NVMe.
?

On Sat, Aug 31, 2024 at 03:49:11PM +0200, Francesco Dolcini wrote:
On Fri, Aug 30, 2024 at 02:51:19PM -0600, Tom Rini wrote:
On Mon, Aug 26, 2024 at 03:19:33PM -0300, Hiago De Franco wrote:
From: Hiago De Franco hiago.franco@toradex.com
When SPL_FS_LOADER is set to y and FS_LOADER is not enabled, the SPL build fails with the following errors:
AR spl/boot/built-in.o LD spl/u-boot-spl arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `fw_get_filesystem_firmware': /u-boot/drivers/misc/fs_loader.c:162: undefined reference to `fs_set_blk_dev' arm-none-linux-gnueabihf-ld.bfd: /home/frh/tdx/src/u-boot/drivers/misc/ fs_loader.c:185: undefined reference to `fs_read' arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `select_fs_dev': /u-boot/drivers/misc/fs_loader.c:89: undefined reference to `fs_set_blk_dev_with_part' make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 make: *** [Makefile:2055: spl/u-boot-spl] Error 2
Fix it by replacing the FS_LOADER with SPL_FS_LOADER in the Makefile, so the fs.c with the necessary function definitions are compiled.
Fixes: b071a07743d4 ("drivers: misc: Makefile: Enable fs_loader compilation at SPL Level") Suggested-by: Francesco Dolcini francesco.dolcini@toradex.com Signed-off-by: Hiago De Franco hiago.franco@toradex.com Reviewed-by: Tom Rini trini@konsulko.com
This leads to failure to build on sandbox_noinst_defconfig.
--- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -110,6 +110,7 @@ config EFI_MEDIA config SPL_BLK_FS bool "Load images from filesystems on block devices" depends on SPL_BLK
select SPL_FS_LOADER help Use generic support to load images from fat/ext filesystems on different types of block devices such as NVMe.
?
I think "depends on" and sandbox_noinst_defconfig should enable CONFIG_SPL_FS_LOADER too.

Hello Tom,
On Wed, Sep 04, 2024 at 03:27:21PM -0600, Tom Rini wrote:
On Sat, Aug 31, 2024 at 03:49:11PM +0200, Francesco Dolcini wrote:
On Fri, Aug 30, 2024 at 02:51:19PM -0600, Tom Rini wrote:
On Mon, Aug 26, 2024 at 03:19:33PM -0300, Hiago De Franco wrote:
From: Hiago De Franco hiago.franco@toradex.com
When SPL_FS_LOADER is set to y and FS_LOADER is not enabled, the SPL build fails with the following errors:
AR spl/boot/built-in.o LD spl/u-boot-spl arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `fw_get_filesystem_firmware': /u-boot/drivers/misc/fs_loader.c:162: undefined reference to `fs_set_blk_dev' arm-none-linux-gnueabihf-ld.bfd: /home/frh/tdx/src/u-boot/drivers/misc/ fs_loader.c:185: undefined reference to `fs_read' arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `select_fs_dev': /u-boot/drivers/misc/fs_loader.c:89: undefined reference to `fs_set_blk_dev_with_part' make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 make: *** [Makefile:2055: spl/u-boot-spl] Error 2
Fix it by replacing the FS_LOADER with SPL_FS_LOADER in the Makefile, so the fs.c with the necessary function definitions are compiled.
Fixes: b071a07743d4 ("drivers: misc: Makefile: Enable fs_loader compilation at SPL Level") Suggested-by: Francesco Dolcini francesco.dolcini@toradex.com Signed-off-by: Hiago De Franco hiago.franco@toradex.com Reviewed-by: Tom Rini trini@konsulko.com
This leads to failure to build on sandbox_noinst_defconfig.
--- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -110,6 +110,7 @@ config EFI_MEDIA config SPL_BLK_FS bool "Load images from filesystems on block devices" depends on SPL_BLK
select SPL_FS_LOADER help Use generic support to load images from fat/ext filesystems on different types of block devices such as NVMe.
?
I think "depends on" and sandbox_noinst_defconfig should enable CONFIG_SPL_FS_LOADER too.
What do you mean?
The change I proposed fixes the issue you reported with sandbox_noinst_defconfig and I think is the right solution. Are you ok with that or are you proposing to just change sandbox_noinst_defconfig enabling CONFIG_SPL_FS_LOADER explicitly?
Francesco

On Thu, Sep 05, 2024 at 01:44:37AM +0200, Francesco Dolcini wrote:
Hello Tom,
On Wed, Sep 04, 2024 at 03:27:21PM -0600, Tom Rini wrote:
On Sat, Aug 31, 2024 at 03:49:11PM +0200, Francesco Dolcini wrote:
On Fri, Aug 30, 2024 at 02:51:19PM -0600, Tom Rini wrote:
On Mon, Aug 26, 2024 at 03:19:33PM -0300, Hiago De Franco wrote:
From: Hiago De Franco hiago.franco@toradex.com
When SPL_FS_LOADER is set to y and FS_LOADER is not enabled, the SPL build fails with the following errors:
AR spl/boot/built-in.o LD spl/u-boot-spl arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `fw_get_filesystem_firmware': /u-boot/drivers/misc/fs_loader.c:162: undefined reference to `fs_set_blk_dev' arm-none-linux-gnueabihf-ld.bfd: /home/frh/tdx/src/u-boot/drivers/misc/ fs_loader.c:185: undefined reference to `fs_read' arm-none-linux-gnueabihf-ld.bfd: drivers/misc/fs_loader.o: in function `select_fs_dev': /u-boot/drivers/misc/fs_loader.c:89: undefined reference to `fs_set_blk_dev_with_part' make[1]: *** [scripts/Makefile.spl:527: spl/u-boot-spl] Error 1 make: *** [Makefile:2055: spl/u-boot-spl] Error 2
Fix it by replacing the FS_LOADER with SPL_FS_LOADER in the Makefile, so the fs.c with the necessary function definitions are compiled.
Fixes: b071a07743d4 ("drivers: misc: Makefile: Enable fs_loader compilation at SPL Level") Suggested-by: Francesco Dolcini francesco.dolcini@toradex.com Signed-off-by: Hiago De Franco hiago.franco@toradex.com Reviewed-by: Tom Rini trini@konsulko.com
This leads to failure to build on sandbox_noinst_defconfig.
--- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -110,6 +110,7 @@ config EFI_MEDIA config SPL_BLK_FS bool "Load images from filesystems on block devices" depends on SPL_BLK
select SPL_FS_LOADER help Use generic support to load images from fat/ext filesystems on different types of block devices such as NVMe.
?
I think "depends on" and sandbox_noinst_defconfig should enable CONFIG_SPL_FS_LOADER too.
What do you mean?
The change I proposed fixes the issue you reported with sandbox_noinst_defconfig and I think is the right solution. Are you ok with that or are you proposing to just change sandbox_noinst_defconfig enabling CONFIG_SPL_FS_LOADER explicitly?
I'm saying, based on the other options which use SPL_FS_LOADER it should be a depends not select here, and that sandbox_noinst_defconfig should be enabling SPL_FS_LOADER. There's also an argument to be made that SPL_FS_LOADER (and FS_LOADER) should be unprompted options (ie "bool" without the text to explain the option) and selected by all of its users. I'm not immediately sure which is better now.
participants (3)
-
Francesco Dolcini
-
Hiago De Franco
-
Tom Rini