Allow disabling non-FIT image loading from SPL
v4 cover Allow disabling non-FIT image loading from SPL
Hello all,
To address a needed feature brought up by Andreas[0], we need a way to disable SPL from loading non-FIT images.
The function spl_parse_image_header is common to all SPL loading paths (common/spl/spl_(nand|net|nor|etc..)) so we add the check here.
This version of the series is a bit different than the last 2 due to suggestions by Simon, instead of a negative option disabling non-FIT images, we allow the other image format's support to be toggled off, and do that on HS boards.
Thanks,
Andrew
[0] https://www.mail-archive.com/u-boot at lists.denx.de/msg219253.html
Changes from v3:
- Add debug print as suggested by Simon
Andrew F. Davis (6):
spl: Convert CONFIG_SPL_ABORT_ON_RAW_IMAGE into a positive option
spl: Add option to enable SPL Legacy image support
ARM: AM335x: Disable non-FIT based image loading for HS devices
ARM: AM43xx: Disable non-FIT based image loading for HS devices
ARM: AM57xx: Disable non-FIT based image loading for HS devices
ARM: DRA7xx: Disable non-FIT based image loading for HS devices
Kconfig | 15 +++++++++++++++ README | 4 ---- common/spl/spl.c | 20 ++++++++++++++------ configs/am335x_hs_evm_defconfig | 2 ++ configs/am43xx_hs_evm_defconfig | 2 ++ configs/am57xx_hs_evm_defconfig | 2 ++ configs/dra7xx_hs_evm_defconfig | 2 ++ include/configs/imx6_spl.h | 4 ++-- include/configs/socfpga_de1_soc.h | 2 +- include/spl.h | 2 +- 10 files changed, 41 insertions(+), 14 deletions(-)
Signature · 1 line
2.11.0
PATCH v4 1/6 spl: Convert CONFIG_SPL_ABORT_ON_RAW_IMAGE into a positive option
CONFIG_SPL_ABORT_ON_RAW_IMAGE causes SPL to abort and move on when it encounters RAW images, express this same functionality as a positive option enabling support for RAW images: CONFIG_SPL_RAW_IMAGE_SUPPORT
--- Kconfig | 7 +++++++ README | 4 ---- common/spl/spl.c | 10 ++++++---- include/configs/imx6_spl.h | 4 ++-- include/configs/socfpga_de1_soc.h | 2 +- include/spl.h | 2 +- 6 files changed, 17 insertions(+), 12 deletions(-)
Kconfig +7 -0
@@ -291,6 +291,13 @@ config SYS_TEXT_BASE help TODO: Move CONFIG_SYS_TEXT_BASE for all the architecture +config SPL_RAW_IMAGE_SUPPORT + bool "Support SPL loading and booting of RAW images" + default y + help + SPL will support loading and booting a RAW image when this option + is y. If this is not set, SPL will move on to other available + boot media to find a suitable image. config SYS_CLK_FREQ depends on ARC || ARCH_SUNXI
README +0 -4
@@ -3279,10 +3279,6 @@ FIT uImage format: consider that a completely unreadable NAND block is bad, and thus should be skipped silently. - CONFIG_SPL_ABORT_ON_RAW_IMAGE - When defined, SPL will proceed to another boot method - if the image it has loaded does not have a signature. - CONFIG_SPL_RELOC_STACK Adress of the start of the stack SPL will use after relocation. If unspecified, this is equal to
common/spl/spl.c +6 -4
@@ -146,16 +146,18 @@ int spl_parse_image_header(struct spl_image_info *spl_image, }#endif -#ifdef CONFIG_SPL_ABORT_ON_RAW_IMAGE -/* Signature not found, proceed to other boot methods. */ -return -EINVAL ; -#else +#ifdef CONFIG_SPL_RAW_IMAGE_SUPPORT /* Signature not found - assume u-boot.bin */ debug ("mkimage signature not found - ih_magic = %x\n" , header->ih_magic);spl_set_header_raw_uboot (spl_image); +#else +/* RAW image not supported, proceed to other boot methods. */ +debug ("Raw boot image support not enabled, proceeding to other boot methods" ); +return -EINVAL ;#endif } +return 0 ; }
include/configs/imx6_spl.h +2 -2
@@ -45,14 +45,14 @@#if defined(CONFIG_SPL_MMC_SUPPORT )#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1#define CONFIG_SYS_MONITOR_LEN 409600/* 400 KB */ -#define CONFIG_SPL_ABORT_ON_RAW_IMAGE +#undef CONFIG_SPL_RAW_IMAGE_SUPPORT#endif /* SATA support */ #if defined(CONFIG_SPL_SATA_SUPPORT )#define CONFIG_SPL_SATA_BOOT_DEVICE 0#define CONFIG_SYS_SATA_FAT_BOOT_PARTITION 1 -#define CONFIG_SPL_ABORT_ON_RAW_IMAGE +#undef CONFIG_SPL_RAW_IMAGE_SUPPORT#endif /* Define the payload for FAT/EXT support */
include/configs/socfpga_de1_soc.h +1 -1
@@ -50,6 +50,6 @@/* The rest of the configuration is shared */ #include <configs/socfpga_common.h> -#define CONFIG_SPL_ABORT_ON_RAW_IMAGE +#undef CONFIG_SPL_RAW_IMAGE_SUPPORT#endif /* __CONFIG_TERASIC_DE1_SOC_H__ */
include/spl.h +1 -1
@@ -85,7 +85,7 @@ void spl_set_header_raw_uboot(struct spl_image_info *spl_image);* This parses the legacy image header information at @header and sets up * @spl_image according to what is found. If no image header is found, then * a raw image or bootz is assumed. If CONFIG_SPL_PANIC_ON_RAW_IMAGE is -* enabled, then this causes a panic. If CONFIG_SPL_ABORT_ON_RAW_IMAGE is +* enabled, then this causes a panic. If CONFIG_SPL_RAW_IMAGE_SUPPORT is not * enabled then U-Boot gives up. Otherwise U-Boot sets up the image using * spl_set_header_raw_uboot(), or possibly the bootz header. *
Signature · 1 line
2.11.0
PATCH v4 1/6 spl: Convert CONFIG_SPL_ABORT_ON_RAW_IMAGE into a positive option
Quoted 11 lines · Andrew F. Davis
CONFIG_SPL_ABORT_ON_RAW_IMAGEcauses SPL to abort and move on when it encounters RAW images, express this same functionality as a positive option enabling support for RAW images:CONFIG_SPL_RAW_IMAGE_SUPPORTSigned-off-by Andrew F. Davis <[email protected]>--- Kconfig | 7 +++++++ README | 4 ---- common/spl/spl.c | 10 ++++++---- include/configs/imx6_spl.h | 4 ++-- include/configs/socfpga_de1_soc.h | 2 +-
OK, with this in Kconfig, we need to migrate the appropriate configs/ files rather than tweak include/configs/ files again. I think moveconfig.py will be reasonable to run here given that you can pass a list of defconfigs to look at (anything that sets CONFIG_IMX6 and so on). Thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170214/3978b0ce/attachment.sig>
PATCH v4 1/6 spl: Convert CONFIG_SPL_ABORT_ON_RAW_IMAGE into a positive option
Quoted 14 lines · Tom Rini
Quoted 11 lines · Andrew F. Davis
CONFIG_SPL_ABORT_ON_RAW_IMAGEcauses SPL to abort and move on when it encounters RAW images, express this same functionality as a positive option enabling support for RAW images:CONFIG_SPL_RAW_IMAGE_SUPPORTSigned-off-by Andrew F. Davis <[email protected]>--- Kconfig | 7 +++++++ README | 4 ---- common/spl/spl.c | 10 ++++++---- include/configs/imx6_spl.h | 4 ++-- include/configs/socfpga_de1_soc.h | 2 +-
Quoted 6 lines
OK, with this in
Kconfig, we need to migrate the appropriate configs/ files rather than tweakinclude/configs/files again. I thinkmoveconfig.pywill be reasonable to run here given that you can pass a list of defconfigs to look at (anything that setsCONFIG_IMX6and so on). Thanks!
It does, and it removes the symbols I tweaked in the include/configs/ automatically. The issue is that it also caused a lot of churn in the defconfig files as a lot of symbols have become out of order and get re-ordered. With other similar patches re-ordering defconfig symbols this would be trouble for you to merge and for me to rebase if it needs a re-spin. Maybe moveconfig.py could be done on your side when patches like this are taken?
I'll post the patch generated bytools/moveconfig.py -c -v SPL_RAW_IMAGE_SUPPORT
but it may be very large and I cannot guarantee it will not have +300 merge conflicts for you to handle if you take it with other defconfig fixup patches :)
Andrew
PATCH v4 1/6 spl: Convert CONFIG_SPL_ABORT_ON_RAW_IMAGE into a positive option
Quoted 21 lines · Andrew F. Davis
Quoted 14 lines · Tom Rini
Quoted 11 lines · Andrew F. Davis
CONFIG_SPL_ABORT_ON_RAW_IMAGEcauses SPL to abort and move on when it encounters RAW images, express this same functionality as a positive option enabling support for RAW images:CONFIG_SPL_RAW_IMAGE_SUPPORTSigned-off-by Andrew F. Davis <[email protected]>--- Kconfig | 7 +++++++ README | 4 ---- common/spl/spl.c | 10 ++++++---- include/configs/imx6_spl.h | 4 ++-- include/configs/socfpga_de1_soc.h | 2 +-Quoted 5 lines
OK, with this in
Kconfig, we need to migrate the appropriate configs/ files rather than tweakinclude/configs/files again. I thinkmoveconfig.pywill be reasonable to run here given that you can pass a list of defconfigs to look at (anything that setsCONFIG_IMX6and so on). Thanks!
Quoted 7 lines
It does, and it removes the symbols I tweaked in the
include/configs/automatically. The issue is that it also caused a lot of churn in the defconfig files as a lot of symbols have become out of order and get re-ordered. With other similar patches re-ordering defconfig symbols this would be trouble for you to merge and for me to rebase if it needs a re-spin. Maybemoveconfig.pycould be done on your side when patches like this are taken?
So in this case, the way you deal with it is:
1) Do a moveconfig.py -s and commit the results.
2) Do the rest of your patches
3) Drop that first patch and post. If it doesn't apply cleanly (sometimes it in fact does), I end up dealing with the fallout.
It's easier for me to deal with fixing defconfig fails to apply than it is to be sure that everything is migrated correctly and as intended.
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170214/e8e51edb/attachment.sig>
PATCH v4 1/6 spl: Convert CONFIG_SPL_ABORT_ON_RAW_IMAGE into a positive option
Quoted 30 lines · Tom Rini
Quoted 21 lines · Andrew F. Davis
Quoted 14 lines · Tom Rini
Quoted 11 lines · Andrew F. Davis
CONFIG_SPL_ABORT_ON_RAW_IMAGEcauses SPL to abort and move on when it encounters RAW images, express this same functionality as a positive option enabling support for RAW images:CONFIG_SPL_RAW_IMAGE_SUPPORTSigned-off-by Andrew F. Davis <[email protected]>--- Kconfig | 7 +++++++ README | 4 ---- common/spl/spl.c | 10 ++++++---- include/configs/imx6_spl.h | 4 ++-- include/configs/socfpga_de1_soc.h | 2 +-Quoted 5 lines
OK, with this in
Kconfig, we need to migrate the appropriate configs/ files rather than tweakinclude/configs/files again. I thinkmoveconfig.pywill be reasonable to run here given that you can pass a list of defconfigs to look at (anything that setsCONFIG_IMX6and so on). Thanks!Quoted 7 lines
It does, and it removes the symbols I tweaked in the
include/configs/automatically. The issue is that it also caused a lot of churn in the defconfig files as a lot of symbols have become out of order and get re-ordered. With other similar patches re-ordering defconfig symbols this would be trouble for you to merge and for me to rebase if it needs a re-spin. Maybemoveconfig.pycould be done on your side when patches like this are taken?
Quoted 9 lines
So in this case, the way you deal with it is:
1) Do amoveconfig.py-s and commit the results.
2) Do the rest of your patches
3) Drop that first patch and post. If it doesn't apply cleanly (sometimes it in fact does), I end up dealing with the fallout.It's easier for me to deal with fixing defconfig fails to apply than it is to be sure that everything is migrated correctly and as intended.
Works for me, I'll post v5 with this change.
Thanks,
Andrew
PATCH v4 2/6 spl: Add option to enable SPL Legacy image support
In reply to Andrew F. DavisAdd a Kconfig option that enables Legacy image support, this allows boards to explicitly disable this, for instance when needed for security reasons.
--- Kconfig | 8 ++++++++ common/spl/spl.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-)
Kconfig +8 -0
@@ -299,6 +299,14 @@ config SPL_RAW_IMAGE_SUPPORT is y. If this is not set, SPL will move on to other available boot media to find a suitable image. +config SPL_LEGACY_IMAGE_SUPPORT + bool "Support SPL loading and booting of Legacy images" + default y + help + SPL will support loading and booting Legacy images when this option + is y. If this is not set, SPL will move on to other available + boot media to find a suitable image. + config SYS_CLK_FREQ depends on ARC || ARCH_SUNXI int "CPU clock frequency"
common/spl/spl.c +8 -2
@@ -93,9 +93,10 @@ void spl_set_header_raw_uboot(struct spl_image_info *spl_image)int spl_parse_image_header (struct spl_image_info *spl_image,const struct image_header *header) { -u32 header_size =sizeof (struct image_header ); -if (image_get_magic (header) ==IH_MAGIC ) { +#ifdef CONFIG_SPL_LEGACY_IMAGE_SUPPORT +u32 header_size =sizeof (struct image_header ); +if (spl_image->flags &SPL_COPY_PAYLOAD_ONLY ) {/* * On some system (e.g. powerpc), the load-address and
@@ -118,6 +119,11 @@ int spl_parse_image_header(struct spl_image_info *spl_image,debug ("spl: payload image: %.*s load addr: 0x%lx size: %d\n" , (int )sizeof (spl_image->name), spl_image->name, spl_image->load_addr, spl_image->size); +#else +/* LEGACY image not supported */ +debug ("Legacy boot image support not enabled, proceeding to other boot methods" ); +return -EINVAL ; +#endif }else {#ifdef CONFIG_SPL_PANIC_ON_RAW_IMAGE /*
Signature · 1 line
2.11.0
PATCH v4 2/6 spl: Add option to enable SPL Legacy image support
Quoted 6 lines · Andrew F. Davis
Add a
Kconfigoption that enables Legacy image support, this allows boards to explicitly disable this, for instance when needed for security reasons.Signed-off-by Andrew F. Davis <[email protected]>Reviewed-by Simon Glass <[email protected]>
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170214/f034e981/attachment.sig>
PATCH v4 3/6 ARM: AM335x: Disable non-FIT based image loading for HS devices
In reply to Andrew F. DavisDisable support for loading non-FIT images for AM335x platforms using the high-security (HS) device variant.
--- configs/am335x_hs_evm_defconfig | 2 ++ 1 file changed, 2 insertions(+)
configs/am335x_hs_evm_defconfig +2 -0
@@ -14,6 +14,8 @@ CONFIG_SYS_EXTRA_OPTIONS="NAND" CONFIG_SPL_LOAD_FIT=y CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y CONFIG_FIT_IMAGE_POST_PROCESS=y +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y CONFIG_SPL=y
Signature · 1 line
2.11.0
PATCH v4 3/6 ARM: AM335x: Disable non-FIT based image loading for HS devices
Quoted 5 lines · Andrew F. Davis
Disable support for loading non-FIT images for AM335x platforms using the high-security (HS) device variant.
Signed-off-by Andrew F. Davis <[email protected]>Reviewed-by Simon Glass <[email protected]>
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170214/c5fc41c7/attachment.sig>
PATCH v4 4/6 ARM: AM43xx: Disable non-FIT based image loading for HS devices
In reply to Andrew F. DavisDisable support for loading non-FIT images for AM43xx platforms using the high-security (HS) device variant.
--- configs/am43xx_hs_evm_defconfig | 2 ++ 1 file changed, 2 insertions(+)
configs/am43xx_hs_evm_defconfig +2 -0
@@ -10,6 +10,8 @@ CONFIG_FIT=y CONFIG_FIT_IMAGE_POST_PROCESS=y CONFIG_SPL_LOAD_FIT=y CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1, NAND" CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y
Signature · 1 line
2.11.0
PATCH v4 4/6 ARM: AM43xx: Disable non-FIT based image loading for HS devices
Quoted 5 lines · Andrew F. Davis
Disable support for loading non-FIT images for AM43xx platforms using the high-security (HS) device variant.
Signed-off-by Andrew F. Davis <[email protected]>Reviewed-by Simon Glass <[email protected]>
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170214/a17dc630/attachment.sig>
PATCH v4 5/6 ARM: AM57xx: Disable non-FIT based image loading for HS devices
In reply to Andrew F. DavisDisable support for loading non-FIT images for AM57xx platforms using the high-security (HS) device variant.
--- configs/am57xx_hs_evm_defconfig | 2 ++ 1 file changed, 2 insertions(+)
configs/am57xx_hs_evm_defconfig +2 -0
@@ -14,6 +14,8 @@ CONFIG_FIT=y CONFIG_FIT_IMAGE_POST_PROCESS=y CONFIG_SPL_LOAD_FIT=y CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set CONFIG_OF_BOARD_SETUP=y CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y
Signature · 1 line
2.11.0
PATCH v4 5/6 ARM: AM57xx: Disable non-FIT based image loading for HS devices
Quoted 5 lines · Andrew F. Davis
Disable support for loading non-FIT images for AM57xx platforms using the high-security (HS) device variant.
Signed-off-by Andrew F. Davis <[email protected]>Reviewed-by Simon Glass <[email protected]>
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170214/03d81096/attachment.sig>
PATCH v4 6/6 ARM: DRA7xx: Disable non-FIT based image loading for HS devices
In reply to Andrew F. DavisDisable support for loading non-FIT images for DRA7xx platforms using the high-security (HS) device variant.
--- configs/dra7xx_hs_evm_defconfig | 2 ++ 1 file changed, 2 insertions(+)
configs/dra7xx_hs_evm_defconfig +2 -0
@@ -15,6 +15,8 @@ CONFIG_FIT=y CONFIG_FIT_IMAGE_POST_PROCESS=y CONFIG_SPL_LOAD_FIT=y CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set CONFIG_OF_BOARD_SETUP=y CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y
Signature · 1 line
2.11.0
PATCH v4 6/6 ARM: DRA7xx: Disable non-FIT based image loading for HS devices
Quoted 5 lines · Andrew F. Davis
Disable support for loading non-FIT images for DRA7xx platforms using the high-security (HS) device variant.
Signed-off-by Andrew F. Davis <[email protected]>Reviewed-by Simon Glass <[email protected]>
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170214/2ac30762/attachment-0001.sig>