Merge branch '2023-06-23-assorted-important-fixes'

- Merge in a few important fixes.  This includes a (partial) regression
  fix, updating documentation and some sanity checking around image
  loading.
diff --git a/arch/arm/dts/imx8mm-u-boot.dtsi b/arch/arm/dts/imx8mm-u-boot.dtsi
index 7fd5a05..035282b 100644
--- a/arch/arm/dts/imx8mm-u-boot.dtsi
+++ b/arch/arm/dts/imx8mm-u-boot.dtsi
@@ -81,7 +81,9 @@
 
 		fit {
 			description = "Configuration to load ATF before U-Boot";
+#ifndef CONFIG_IMX_HAB
 			fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
+#endif
 			fit,fdt-list = "of-list";
 			#address-cells = <1>;
 
diff --git a/arch/arm/dts/imx8mn-u-boot.dtsi b/arch/arm/dts/imx8mn-u-boot.dtsi
index cef20da..5046b38 100644
--- a/arch/arm/dts/imx8mn-u-boot.dtsi
+++ b/arch/arm/dts/imx8mn-u-boot.dtsi
@@ -145,7 +145,9 @@
 
 		fit {
 			description = "Configuration to load ATF before U-Boot";
+#ifndef CONFIG_IMX_HAB
 			fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
+#endif
 			fit,fdt-list = "of-list";
 			#address-cells = <1>;
 
diff --git a/arch/arm/dts/imx8mp-u-boot.dtsi b/arch/arm/dts/imx8mp-u-boot.dtsi
index 18d1728..68cd0e1 100644
--- a/arch/arm/dts/imx8mp-u-boot.dtsi
+++ b/arch/arm/dts/imx8mp-u-boot.dtsi
@@ -103,7 +103,9 @@
 
 		fit {
 			description = "Configuration to load ATF before U-Boot";
+#ifndef CONFIG_IMX_HAB
 			fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
+#endif
 			fit,fdt-list = "of-list";
 			#address-cells = <1>;
 
diff --git a/arch/arm/dts/imx8mq-u-boot.dtsi b/arch/arm/dts/imx8mq-u-boot.dtsi
index b3fef86..90b2274 100644
--- a/arch/arm/dts/imx8mq-u-boot.dtsi
+++ b/arch/arm/dts/imx8mq-u-boot.dtsi
@@ -97,7 +97,9 @@
 
 		fit {
 			description = "Configuration to load ATF before U-Boot";
+#ifndef CONFIG_IMX_HAB
 			fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
+#endif
 			#address-cells = <1>;
 
 			images {
diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index 702cfc3..488638c 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -510,3 +510,7 @@
 	return (*rev + nxp_board_rev() - 1);
 }
 #endif
+
+__weak void reset_cpu(void)
+{
+}
diff --git a/arch/arm/mach-imx/hab.c b/arch/arm/mach-imx/hab.c
index c6747b2..439cdaf 100644
--- a/arch/arm/mach-imx/hab.c
+++ b/arch/arm/mach-imx/hab.c
@@ -932,10 +932,10 @@
 	printf("ivt entry = 0x%08x, dcd = 0x%08x, csf = 0x%08x\n", ivt->entry,
 	       ivt->dcd, ivt->csf);
 	puts("Dumping IVT\n");
-	print_buffer(ivt_addr, (void *)(ivt_addr), 4, 0x8, 0);
+	print_buffer(ivt_addr, (void *)(uintptr_t)(ivt_addr), 4, 0x8, 0);
 
 	puts("Dumping CSF Header\n");
-	print_buffer(ivt->csf, (void *)(ivt->csf), 4, 0x10, 0);
+	print_buffer(ivt->csf, (void *)(uintptr_t)(ivt->csf), 4, 0x10, 0);
 
 #if  !defined(CONFIG_SPL_BUILD)
 	get_hab_status();
@@ -944,7 +944,7 @@
 	puts("\nCalling authenticate_image in ROM\n");
 	printf("\tivt_offset = 0x%x\n", ivt_offset);
 	printf("\tstart = 0x%08lx\n", start);
-	printf("\tbytes = 0x%x\n", bytes);
+	printf("\tbytes = 0x%lx\n", (ulong)bytes);
 #endif
 
 #ifndef CONFIG_ARM64
diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c
index cb9801b..6c13b00 100644
--- a/arch/arm/mach-imx/spl.c
+++ b/arch/arm/mach-imx/spl.c
@@ -20,6 +20,7 @@
 #include <asm/mach-imx/boot_mode.h>
 #include <g_dnl.h>
 #include <linux/libfdt.h>
+#include <memalign.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -315,47 +316,21 @@
 	size = ALIGN(size, 0x1000);
 	size += CONFIG_CSF_SIZE;
 
-	return size;
-}
+	if (size > CONFIG_SYS_BOOTM_LEN)
+		panic("spl: ERROR: image too big\n");
 
-void board_spl_fit_post_load(const void *fit)
-{
-	u32 offset = ALIGN(fdt_totalsize(fit), 0x1000);
-
-	if (imx_hab_authenticate_image((uintptr_t)fit,
-				       offset + IVT_SIZE + CSF_PAD_SIZE,
-				       offset)) {
-		panic("spl: ERROR:  image authentication unsuccessful\n");
-	}
+	return size;
 }
 #endif
 
 void *board_spl_fit_buffer_addr(ulong fit_size, int sectors, int bl_len)
 {
-	int align_len = ARCH_DMA_MINALIGN - 1;
-
-	/* Some devices like SDP, NOR, NAND, SPI are using bl_len =1, so their fit address
-	 * is different with SD/MMC, this cause mismatch with signed address. Thus, adjust
-	 * the bl_len to align with SD/MMC.
-	 */
-	if (bl_len < 512)
-		bl_len = 512;
-
-	return  (void *)((CONFIG_TEXT_BASE - fit_size - bl_len -
-			align_len) & ~align_len);
-}
+#if defined(CONFIG_SPL_LOAD_FIT_ADDRESS)
+	return (void *)CONFIG_SPL_LOAD_FIT_ADDRESS;
+#else
+	return (void *)(CONFIG_TEXT_BASE + CONFIG_SYS_BOOTM_LEN);
 #endif
-
-#if defined(CONFIG_MX6) && defined(CONFIG_SPL_OS_BOOT)
-int dram_init_banksize(void)
-{
-	gd->bd->bi_dram[0].start = CFG_SYS_SDRAM_BASE;
-	gd->bd->bi_dram[0].size = imx_ddr_size();
-
-	return 0;
 }
-#endif
-
 /*
  * read the address where the IVT header must sit
  * from IVT image header, loaded from SPL into
@@ -365,7 +340,6 @@
 void *spl_load_simple_fit_fix_load(const void *fit)
 {
 	struct ivt *ivt;
-	unsigned long new;
 	unsigned long offset;
 	unsigned long size;
 	u8 *tmp = (u8 *)fit;
@@ -375,16 +349,23 @@
 	size = board_spl_fit_size_align(size);
 	tmp += offset;
 	ivt = (struct ivt *)tmp;
-	if (ivt->hdr.magic != IVT_HEADER_MAGIC) {
-		debug("no IVT header found\n");
-		return (void *)fit;
-	}
+
 	debug("%s: ivt: %p offset: %lx size: %lx\n", __func__, ivt, offset, size);
 	debug("%s: ivt self: %x\n", __func__, ivt->self);
-	new = ivt->self;
-	new -= offset;
-	debug("%s: new %lx\n", __func__, new);
-	memcpy((void *)new, fit, size);
+
+	if (imx_hab_authenticate_image((uintptr_t)fit, (uintptr_t)ivt, offset))
+		panic("spl: ERROR: image authentication unsuccessful\n");
 
-	return (void *)new;
+	return (void *)fit;
 }
+#endif /* CONFIG_IMX_HAB */
+
+#if defined(CONFIG_MX6) && defined(CONFIG_SPL_OS_BOOT)
+int dram_init_banksize(void)
+{
+	gd->bd->bi_dram[0].start = CFG_SYS_SDRAM_BASE;
+	gd->bd->bi_dram[0].size = imx_ddr_size();
+
+	return 0;
+}
+#endif
diff --git a/arch/mips/cpu/cpu.c b/arch/mips/cpu/cpu.c
index b304026..f0e20da 100644
--- a/arch/mips/cpu/cpu.c
+++ b/arch/mips/cpu/cpu.c
@@ -15,7 +15,7 @@
 #if !CONFIG_IS_ENABLED(SYSRESET)
 void __weak _machine_restart(void)
 {
-	fprintf(stderr, "*** reset failed ***\n");
+	puts("*** reset failed ***\n");
 
 	while (1)
 		/* NOP */;
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 365371f..02e54f1 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -362,7 +362,8 @@
 
 config SYS_BOOTM_LEN
 	hex "Maximum size of a decompresed OS image"
-	depends on CMD_BOOTM || CMD_BOOTI || CMD_BOOTZ
+	depends on CMD_BOOTM || CMD_BOOTI || CMD_BOOTZ || \
+		   LEGACY_IMAGE_FORMAT || SPL_LEGACY_IMAGE_FORMAT
 	default 0x4000000 if PPC || ARM64
 	default 0x1000000 if X86 || ARCH_MX6 || ARCH_MX7
 	default 0x800000
diff --git a/common/menu.c b/common/menu.c
index 9451417..b55cf7b 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -15,7 +15,7 @@
 
 #include "menu.h"
 
-#define ansi 0
+#define ansi 1
 
 /*
  * Internally, each item in a menu is represented by a struct menu_item.
diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
index c51482b..730639f 100644
--- a/common/spl/spl_fit.c
+++ b/common/spl/spl_fit.c
@@ -27,10 +27,6 @@
 	int conf_node;		/* FDT offset to selected configuration node */
 };
 
-__weak void board_spl_fit_post_load(const void *fit)
-{
-}
-
 __weak ulong board_spl_fit_size_align(ulong size)
 {
 	return size;
@@ -829,8 +825,5 @@
 
 	spl_image->flags |= SPL_FIT_FOUND;
 
-	if (IS_ENABLED(CONFIG_IMX_HAB))
-		board_spl_fit_post_load(ctx.fit);
-
 	return 0;
 }
diff --git a/common/spl/spl_legacy.c b/common/spl/spl_legacy.c
index 16851c5..d34bc54 100644
--- a/common/spl/spl_legacy.c
+++ b/common/spl/spl_legacy.c
@@ -7,6 +7,7 @@
 #include <image.h>
 #include <log.h>
 #include <malloc.h>
+#include <asm/sections.h>
 #include <spl.h>
 
 #include <lzma/LzmaTypes.h>
@@ -15,6 +16,22 @@
 
 #define LZMA_LEN	(1 << 20)
 
+static void spl_parse_legacy_validate(uintptr_t start, uintptr_t size)
+{
+	uintptr_t spl_start = (uintptr_t)_start;
+	uintptr_t spl_end = (uintptr_t)__bss_end;
+	uintptr_t end = start + size;
+
+	if ((start >= spl_start && start < spl_end) ||
+	    (end > spl_start && end <= spl_end) ||
+	    (start < spl_start && end >= spl_end) ||
+	    (start > end && end > spl_start))
+		panic("SPL: Image overlaps SPL\n");
+
+	if (size > CONFIG_SYS_BOOTM_LEN)
+		panic("SPL: Image too large\n");
+}
+
 int spl_parse_legacy_header(struct spl_image_info *spl_image,
 			    const struct legacy_img_hdr *header)
 {
@@ -58,6 +75,9 @@
 	      "payload image: %32s load addr: 0x%lx size: %d\n",
 	      spl_image->name, spl_image->load_addr, spl_image->size);
 
+	spl_parse_legacy_validate(spl_image->load_addr, spl_image->size);
+	spl_parse_legacy_validate(spl_image->entry_point, 0);
+
 	return 0;
 }
 
diff --git a/configs/sama5d2_icp_mmc_defconfig b/configs/sama5d2_icp_mmc_defconfig
index 6b7e308..185694d 100644
--- a/configs/sama5d2_icp_mmc_defconfig
+++ b/configs/sama5d2_icp_mmc_defconfig
@@ -41,6 +41,7 @@
 CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
 CONFIG_SPL_BSS_START_ADDR=0x20000000
 CONFIG_SPL_BSS_MAX_SIZE=0x80000
+CONFIG_SPL_SYS_MALLOC_SIMPLE=y
 # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
 CONFIG_SYS_SPL_MALLOC=y
 CONFIG_SYS_SPL_MALLOC_SIZE=0x80000
diff --git a/doc/develop/statistics/u-boot-stats-v2022.10.rst b/doc/develop/statistics/u-boot-stats-v2022.10.rst
index 6fb71d4..7a5fc2e 100644
--- a/doc/develop/statistics/u-boot-stats-v2022.10.rst
+++ b/doc/develop/statistics/u-boot-stats-v2022.10.rst
@@ -607,20 +607,21 @@
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             590 (38.8%)
+   (Unknown)                             584 (38.4%)
    Konsulko Group                        265 (17.4%)
    Google, Inc.                          141 (9.3%)
    NXP                                   77 (5.1%)
+   AMD                                   70 (4.6%)
    ST Microelectronics                   67 (4.4%)
    Linaro                                60 (3.9%)
    Texas Instruments                     56 (3.7%)
-   AMD                                   53 (3.5%)
    DENX Software Engineering             45 (3.0%)
    Toradex                               45 (3.0%)
    Weidmüller Interface GmbH & Co. KG    41 (2.7%)
-   Xilinx                                29 (1.9%)
    Amarula Solutions                     18 (1.2%)
+   Xilinx                                12 (0.8%)
    ARM                                   11 (0.7%)
+   Collabora Ltd.                        7 (0.5%)
    BayLibre SAS                          5 (0.3%)
    SUSE                                  4 (0.3%)
    Socionext Inc.                        3 (0.2%)
@@ -628,7 +629,6 @@
    IBM                                   2 (0.1%)
    Siemens                               2 (0.1%)
    Broadcom                              1 (0.1%)
-   Collabora Ltd.                        1 (0.1%)
    Debian.org                            1 (0.1%)
    Marvell                               1 (0.1%)
    Samsung                               1 (0.1%)
@@ -642,7 +642,7 @@
    Name                                  Count
    ====================================  =====
    Konsulko Group                        98915 (47.3%)
-   (Unknown)                             36773 (17.6%)
+   (Unknown)                             36630 (17.5%)
    Toradex                               20197 (9.7%)
    NXP                                   11759 (5.6%)
    Google, Inc.                          8739 (4.2%)
@@ -651,12 +651,13 @@
    Texas Instruments                     5930 (2.8%)
    ST Microelectronics                   3803 (1.8%)
    DENX Software Engineering             3551 (1.7%)
-   AMD                                   2343 (1.1%)
+   AMD                                   2591 (1.2%)
    Amarula Solutions                     1360 (0.7%)
-   Xilinx                                1016 (0.5%)
+   Xilinx                                768 (0.4%)
    Broadcom                              315 (0.2%)
    ARM                                   298 (0.1%)
    BayLibre SAS                          197 (0.1%)
+   Collabora Ltd.                        144 (0.1%)
    SUSE                                  79 (0.0%)
    IBM                                   34 (0.0%)
    Bootlin                               32 (0.0%)
@@ -665,7 +666,6 @@
    Debian.org                            4 (0.0%)
    Marvell                               3 (0.0%)
    Samsung                               2 (0.0%)
-   Collabora Ltd.                        1 (0.0%)
    ====================================  =====
 
 
@@ -677,13 +677,14 @@
    ====================================  =====
    AMD                                   81 (30.5%)
    NXP                                   51 (19.2%)
-   (Unknown)                             33 (12.4%)
+   (Unknown)                             28 (10.5%)
    Texas Instruments                     19 (7.1%)
    Linaro                                16 (6.0%)
    ARM                                   16 (6.0%)
    Amarula Solutions                     14 (5.3%)
    Xilinx                                13 (4.9%)
    Konsulko Group                        6 (2.3%)
+   Canonical                             5 (1.9%)
    Toradex                               4 (1.5%)
    Google, Inc.                          4 (1.5%)
    Socionext Inc.                        4 (1.5%)
@@ -699,19 +700,20 @@
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             78 (51.0%)
+   (Unknown)                             77 (50.3%)
    Linaro                                12 (7.8%)
    Texas Instruments                     11 (7.2%)
    NXP                                   7 (4.6%)
+   AMD                                   6 (3.9%)
    Google, Inc.                          5 (3.3%)
    DENX Software Engineering             5 (3.3%)
-   Xilinx                                4 (2.6%)
    Toradex                               4 (2.6%)
    ST Microelectronics                   4 (2.6%)
-   AMD                                   3 (2.0%)
    ARM                                   3 (2.0%)
    BayLibre SAS                          3 (2.0%)
    Amarula Solutions                     2 (1.3%)
+   Collabora Ltd.                        2 (1.3%)
+   Xilinx                                1 (0.7%)
    Konsulko Group                        1 (0.7%)
    Socionext Inc.                        1 (0.7%)
    Broadcom                              1 (0.7%)
@@ -723,5 +725,4 @@
    Debian.org                            1 (0.7%)
    Marvell                               1 (0.7%)
    Samsung                               1 (0.7%)
-   Collabora Ltd.                        1 (0.7%)
    ====================================  =====
diff --git a/doc/develop/statistics/u-boot-stats-v2023.01.rst b/doc/develop/statistics/u-boot-stats-v2023.01.rst
index 2fd34bb..793aaa5 100644
--- a/doc/develop/statistics/u-boot-stats-v2023.01.rst
+++ b/doc/develop/statistics/u-boot-stats-v2023.01.rst
@@ -5,7 +5,7 @@
 
 * Processed 1396 changesets from 152 developers
 
-* 23 employers found
+* 24 employers found
 
 * A total of 91252 lines added, 42422 removed (delta 48830)
 
@@ -603,11 +603,11 @@
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             557 (39.9%)
+   (Unknown)                             556 (39.8%)
    Google, Inc.                          270 (19.3%)
+   AMD                                   90 (6.4%)
    DENX Software Engineering             86 (6.2%)
    Linaro                                85 (6.1%)
-   AMD                                   80 (5.7%)
    Konsulko Group                        48 (3.4%)
    ST Microelectronics                   47 (3.4%)
    SUSE                                  36 (2.6%)
@@ -616,16 +616,17 @@
    Broadcom                              27 (1.9%)
    Texas Instruments                     26 (1.9%)
    Amarula Solutions                     24 (1.7%)
-   Xilinx                                13 (0.9%)
    NXP                                   8 (0.6%)
    BayLibre SAS                          6 (0.4%)
    Collabora Ltd.                        6 (0.4%)
    Weidmüller Interface GmbH & Co. KG    6 (0.4%)
    Socionext Inc.                        4 (0.3%)
+   Xilinx                                3 (0.2%)
    Edgeble AI Technologies Pvt. Ltd.     1 (0.1%)
    Marvell                               1 (0.1%)
    Rockchip                              1 (0.1%)
    Siemens                               1 (0.1%)
+   Canonical                             1 (0.1%)
    ====================================  =====
 
 
@@ -635,7 +636,7 @@
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             41561 (37.8%)
+   (Unknown)                             41551 (37.8%)
    Google, Inc.                          19204 (17.5%)
    Linaro                                11194 (10.2%)
    Toradex                               6724 (6.1%)
@@ -644,18 +645,19 @@
    Collabora Ltd.                        3312 (3.0%)
    Amarula Solutions                     3308 (3.0%)
    ST Microelectronics                   3303 (3.0%)
+   AMD                                   2379 (2.2%)
    Texas Instruments                     2174 (2.0%)
    DENX Software Engineering             2105 (1.9%)
-   AMD                                   2105 (1.9%)
    ARM                                   1569 (1.4%)
    SUSE                                  478 (0.4%)
    Weidmüller Interface GmbH & Co. KG    448 (0.4%)
    NXP                                   446 (0.4%)
-   Xilinx                                280 (0.3%)
    Marvell                               200 (0.2%)
    Socionext Inc.                        76 (0.1%)
    BayLibre SAS                          65 (0.1%)
+   Canonical                             10 (0.0%)
    Siemens                               9 (0.0%)
+   Xilinx                                6 (0.0%)
    Edgeble AI Technologies Pvt. Ltd.     1 (0.0%)
    Rockchip                              1 (0.0%)
    ====================================  =====
@@ -669,47 +671,49 @@
    ====================================  =====
    AMD                                   79 (46.7%)
    Amarula Solutions                     27 (16.0%)
-   (Unknown)                             22 (13.0%)
+   (Unknown)                             18 (10.7%)
    DENX Software Engineering             10 (5.9%)
    NXP                                   7 (4.1%)
    Linaro                                5 (3.0%)
    Google, Inc.                          4 (2.4%)
    ST Microelectronics                   4 (2.4%)
    ARM                                   4 (2.4%)
+   Canonical                             4 (2.4%)
    Texas Instruments                     3 (1.8%)
    Konsulko Group                        2 (1.2%)
    BayLibre SAS                          2 (1.2%)
    ====================================  =====
 
 
-.. table:: Employers with the most hackers (total 154)
+.. table:: Employers with the most hackers (total 153)
    :widths: auto
 
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             81 (52.6%)
-   Linaro                                9 (5.8%)
+   (Unknown)                             80 (52.3%)
+   AMD                                   9 (5.9%)
+   Linaro                                9 (5.9%)
    Texas Instruments                     8 (5.2%)
-   AMD                                   7 (4.5%)
    ST Microelectronics                   6 (3.9%)
-   DENX Software Engineering             5 (3.2%)
+   DENX Software Engineering             5 (3.3%)
    Amarula Solutions                     4 (2.6%)
    Toradex                               4 (2.6%)
-   Xilinx                                4 (2.6%)
-   NXP                                   3 (1.9%)
-   Google, Inc.                          3 (1.9%)
-   ARM                                   3 (1.9%)
-   BayLibre SAS                          3 (1.9%)
+   NXP                                   3 (2.0%)
+   Google, Inc.                          3 (2.0%)
+   ARM                                   3 (2.0%)
+   BayLibre SAS                          3 (2.0%)
    Collabora Ltd.                        2 (1.3%)
    SUSE                                  2 (1.3%)
    Weidmüller Interface GmbH & Co. KG    2 (1.3%)
    Socionext Inc.                        2 (1.3%)
-   Konsulko Group                        1 (0.6%)
-   Broadcom                              1 (0.6%)
-   Marvell                               1 (0.6%)
-   Siemens                               1 (0.6%)
-   Edgeble AI Technologies Pvt. Ltd.     1 (0.6%)
-   Rockchip                              1 (0.6%)
+   Canonical                             1 (0.7%)
+   Konsulko Group                        1 (0.7%)
+   Broadcom                              1 (0.7%)
+   Marvell                               1 (0.7%)
+   Siemens                               1 (0.7%)
+   Xilinx                                1 (0.7%)
+   Edgeble AI Technologies Pvt. Ltd.     1 (0.7%)
+   Rockchip                              1 (0.7%)
    ====================================  =====
 
diff --git a/doc/develop/statistics/u-boot-stats-v2023.04.rst b/doc/develop/statistics/u-boot-stats-v2023.04.rst
index 57f2efc..73a3583 100644
--- a/doc/develop/statistics/u-boot-stats-v2023.04.rst
+++ b/doc/develop/statistics/u-boot-stats-v2023.04.rst
@@ -5,7 +5,7 @@
 
 * Processed 1691 changesets from 157 developers
 
-* 29 employers found
+* 28 employers found
 
 * A total of 174471 lines added, 78380 removed (delta 96091)
 
@@ -631,17 +631,17 @@
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             524 (31.0%)
+   (Unknown)                             464 (27.4%)
    Google, Inc.                          381 (22.5%)
    Konsulko Group                        333 (19.7%)
+   Renesas Electronics                   84 (5.0%)
    DENX Software Engineering             72 (4.3%)
    Texas Instruments                     49 (2.9%)
    Linaro                                47 (2.8%)
    Edgeble AI Technologies Pvt. Ltd.     46 (2.7%)
    ST Microelectronics                   40 (2.4%)
-   AMD                                   34 (2.0%)
+   AMD                                   35 (2.1%)
    NXP                                   25 (1.5%)
-   Renesas Electronics                   24 (1.4%)
    Toradex                               24 (1.4%)
    Amarula Solutions                     20 (1.2%)
    Collabora Ltd.                        20 (1.2%)
@@ -659,7 +659,6 @@
    Intel                                 1 (0.1%)
    linutronix                            1 (0.1%)
    Samsung                               1 (0.1%)
-   Xilinx                                1 (0.1%)
    ====================================  =====
 
 
@@ -669,18 +668,18 @@
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             64681 (30.1%)
+   (Unknown)                             51007 (23.8%)
    Texas Instruments                     42105 (19.6%)
    Konsulko Group                        36464 (17.0%)
    Google, Inc.                          30090 (14.0%)
    Edgeble AI Technologies Pvt. Ltd.     23070 (10.7%)
+   Renesas Electronics                   14449 (6.7%)
    Linaro                                4601 (2.1%)
    DENX Software Engineering             4582 (2.1%)
-   AMD                                   1741 (0.8%)
+   AMD                                   1744 (0.8%)
    Amarula Solutions                     1649 (0.8%)
    ST Microelectronics                   882 (0.4%)
    Bootlin                               860 (0.4%)
-   Renesas Electronics                   775 (0.4%)
    Socionext Inc.                        760 (0.4%)
    ARM                                   724 (0.3%)
    Collabora Ltd.                        413 (0.2%)
@@ -695,7 +694,6 @@
    Pengutronix                           13 (0.0%)
    Samsung                               9 (0.0%)
    Ronetix                               4 (0.0%)
-   Xilinx                                3 (0.0%)
    Intel                                 1 (0.0%)
    linutronix                            1 (0.0%)
    ====================================  =====
@@ -707,14 +705,14 @@
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             48 (22.3%)
+   Renesas Electronics                   30 (14.0%)
    Rockchip                              29 (13.5%)
    Toradex                               28 (13.0%)
+   (Unknown)                             27 (12.6%)
    Amarula Solutions                     24 (11.2%)
    AMD                                   23 (10.7%)
    NVidia                                19 (8.8%)
    Linaro                                9 (4.2%)
-   Renesas Electronics                   9 (4.2%)
    Texas Instruments                     5 (2.3%)
    Konsulko Group                        5 (2.3%)
    NXP                                   4 (1.9%)
@@ -734,18 +732,18 @@
    ====================================  =====
    Name                                  Count
    ====================================  =====
-   (Unknown)                             86 (53.8%)
+   (Unknown)                             85 (53.1%)
    Linaro                                9 (5.6%)
    Texas Instruments                     8 (5.0%)
-   AMD                                   6 (3.8%)
+   AMD                                   7 (4.4%)
    Collabora Ltd.                        6 (3.8%)
    Toradex                               5 (3.1%)
    DENX Software Engineering             5 (3.1%)
    Amarula Solutions                     4 (2.5%)
    NXP                                   4 (2.5%)
+   Renesas Electronics                   3 (1.9%)
    ARM                                   3 (1.9%)
    ST Microelectronics                   3 (1.9%)
-   Renesas Electronics                   2 (1.2%)
    SUSE                                  2 (1.2%)
    Socionext Inc.                        2 (1.2%)
    Konsulko Group                        1 (0.6%)
@@ -761,7 +759,6 @@
    Pengutronix                           1 (0.6%)
    Samsung                               1 (0.6%)
    Ronetix                               1 (0.6%)
-   Xilinx                                1 (0.6%)
    linutronix                            1 (0.6%)
    ====================================  =====
 
diff --git a/doc/imx/habv4/csf_examples/mx8m/csf.sh b/doc/imx/habv4/csf_examples/mx8m/csf.sh
index 7a9a05e..5b383fa 100644
--- a/doc/imx/habv4/csf_examples/mx8m/csf.sh
+++ b/doc/imx/habv4/csf_examples/mx8m/csf.sh
@@ -37,29 +37,11 @@
 
 # 3) Sign u-boot.itb
 
-# fitImage tree
-fit_block_base=$(printf "0x%x" $(( $(sed -n "/CONFIG_TEXT_BASE=/ s@.*=@@p" .config) - $(sed -n "/CONFIG_FIT_EXTERNAL_OFFSET=/ s@.*=@@p" .config) - 0x200 - 0x40)) )
+# fitImage
+fit_block_base=$(printf "0x%x" $(sed -n "/CONFIG_SPL_LOAD_FIT_ADDRESS=/ s@.*=@@p" .config) )
 fit_block_offset=$(printf "0x%s" $(fdtget -t x u-boot.dtb /binman/imx-boot/uboot offset))
-fit_block_size=$(printf "0x%x" $(( ( ($(fdtdump u-boot.itb 2>/dev/null | sed -n "/^...totalsize:/ s@.*\(0x[0-9a-f]\+\).*@\1@p") + 0x1000 - 0x1 ) & ~(0x1000 - 0x1)) + 0x20 )) )
-sed -i "/Blocks = / s@.*@  Blocks = $fit_block_base $fit_block_offset $fit_block_size \"flash.bin\", \\\\@" csf_fit.tmp
-
-# U-Boot
-uboot_block_base=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/uboot load))
-uboot_block_offset=$(printf "0x%x" $(( $(printf "0x%s" $(fdtget -t x u-boot.itb /images/uboot data-position)) + ${fit_block_offset} )))
-uboot_block_size=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/uboot data-size))
-sed -i "/0xuuuu/ s@.*@           $uboot_block_base $uboot_block_offset $uboot_block_size \"flash.bin\", \\\\@" csf_fit.tmp
-
-# ATF
-atf_block_base=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/atf load))
-atf_block_offset=$(printf "0x%x" $(( $(printf "0x%s" $(fdtget -t x u-boot.itb /images/atf data-position)) + ${fit_block_offset} )))
-atf_block_size=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/atf data-size))
-sed -i "/0xaaaa/ s@.*@           $atf_block_base $atf_block_offset $atf_block_size \"flash.bin\", \\\\@" csf_fit.tmp
-
-# DTB
-dtb_block_base=$(printf "0x%x" $(( ${uboot_block_base} + ${uboot_block_size} )))
-dtb_block_offset=$(printf "0x%x" $(( $(printf "0x%s" $(fdtget -t x u-boot.itb /images/fdt-1 data-position)) + ${fit_block_offset} )))
-dtb_block_size=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/fdt-1 data-size))
-sed -i "/0xdddd/ s@.*@           $dtb_block_base $dtb_block_offset $dtb_block_size \"flash.bin\"@" csf_fit.tmp
+fit_block_size=$(printf "0x%x" $(( ( ( $(stat -tc %s u-boot.itb) + 0x1000 - 0x1 ) & ~(0x1000 - 0x1)) + 0x20 )) )
+sed -i "/Blocks = / s@.*@  Blocks = $fit_block_base $fit_block_offset $fit_block_size \"flash.bin\"@" csf_fit.tmp
 
 # IVT
 ivt_ptr_base=$(printf "%08x" ${fit_block_base} | sed "s@\(..\)\(..\)\(..\)\(..\)@0x\4\3\2\1@")
@@ -68,7 +50,7 @@
 ivt_block_offset=$((${fit_block_offset} + ${fit_block_size} - 0x20))
 csf_block_offset=$((${ivt_block_offset} + 0x20))
 
-echo "0xd1002041 ${ivt_ptr_base} 0x00000000 0x00000000 0x00000000 ${ivt_block_base} ${csf_block_base} 0x00000000" | xxd -r -p > ivt.bin
+echo "0xd1002041 ${ivt_block_base} 0x00000000 0x00000000 0x00000000 ${ivt_block_base} ${csf_block_base} 0x00000000" | xxd -r -p > ivt.bin
 dd if=ivt.bin of=flash.bin bs=1 seek=${ivt_block_offset} conv=notrunc
 
 # Generate CSF blob
diff --git a/doc/imx/habv4/csf_examples/mx8m/csf_fit.txt b/doc/imx/habv4/csf_examples/mx8m/csf_fit.txt
index cd1d407..bbb82f6 100644
--- a/doc/imx/habv4/csf_examples/mx8m/csf_fit.txt
+++ b/doc/imx/habv4/csf_examples/mx8m/csf_fit.txt
@@ -26,11 +26,5 @@
 [Authenticate Data]
   Verification index = 2
   # FIXME:
-  # Line 1 -- fitImage tree
-  # Line 2 -- U-Boot u-boot-nodtb.bin blob
-  # Line 3 -- ATF BL31 blob
-  # Line 4 -- DT blob
-  Blocks = 0x401fcdc0 0x57c00 0xffff "flash.bin", \
-           0x40200000 0x62c00 0xuuuu "flash.bin", \
-	   0x920000   0x00000 0xaaaa "flash.bin", \
-	   0x40200000 0x00000 0xdddd "flash.bin"
+  # Line 1 -- fitImage
+  Blocks = 0x401fcdc0 0x57c00 0xffff "flash.bin"
diff --git a/doc/imx/habv4/guides/mx8m_spl_secure_boot.txt b/doc/imx/habv4/guides/mx8m_spl_secure_boot.txt
index 3e3d384..e79726b 100644
--- a/doc/imx/habv4/guides/mx8m_spl_secure_boot.txt
+++ b/doc/imx/habv4/guides/mx8m_spl_secure_boot.txt
@@ -79,18 +79,16 @@
 
 The diagram below illustrate a signed U-Boot binary, DT blob and external
 ATF BL31 blob combined to form fitImage part of flash.bin container layout.
-The *load_address is derived from CONFIG_TEXT_BASE such that the U-Boot
-binary *start is placed exactly at CONFIG_SPL_TEXT_BASE in DRAM, however the
-SPL moves the fitImage tree further to location:
- *load_address = CONFIG_SPL_TEXT_BASE - CONFIG_FIT_EXTERNAL_OFFSET (=12kiB) -
-                 512 Byte sector - sizeof(mkimage header)
+The *load_address is CONFIG_SPL_LOAD_FIT_ADDRESS, the fitImage is loaded
+including all of its embedded data, authenticated using IVT+CSF concatenated
+at the end of the fitImage at offset aligned to 4 kiB. The fitImage with
+external data is not supported.
 
             ------- +-----------------------------+ <-- *load_address
                 ^   |                             |
                 |   |        fitImage tree        |
-                |   |    with external data at    |
-                |   |   offset 12 kiB from tree   |
-                |   |        (cca. 1 kiB)         |
+                |   |      with embedded data     |
+                |   |        (cca. 1 MiB)         |
          Signed |   |                             |
   .-----  Tree  |   +-----------------------------+
   |       Data  |   | Padding to next 4k aligned  |
@@ -101,34 +99,9 @@
   |         ------- +-----------------------------+ <-- *csf
   |                 | Command Sequence File (CSF) |
   |                 |  for all signed entries in  |
-   >--------------->| the fitImage, tree and data |
-  |                 |        (cca 6-7 kiB)        |
-  |                 +-----------------------------+
-  |                 |  Padding to 12 kiB offset   |
-  |                 |     from *load_address      |
-  |         ------- +-----------------------------+ <-- *start
-  |             ^   |                             |
-  |      Signed |   |                             |
-  |---- Payload |   |  U-Boot external data blob  |
-  |       Data  |   |                             |
-  |             v   |                             |
-  |         ------- +-----------------------------+
-  |                 |     Padding to 4 Bytes      |
-  |         ------- +-----------------------------+
-  |             ^   |                             |
-  |      Signed |   |                             |
-  |---- Payload |   |    ATF external data blob   |
-  |       Data  |   |                             |
-  |             v   |                             |
-  |         ------- +-----------------------------+
-  |                 |     Padding to 4 Bytes      |
-  |         ------- +-----------------------------+
-  |             ^   |                             |
-  |      Signed |   |                             |
-  '---- Payload |   |    DTB external data blob   |
-          Data  |   |                             |
-                v   |                             |
-            ------- +-----------------------------+
+  '---------------->| the fitImage, tree and data |
+                    |        (cca 6-7 kiB)        |
+                    +-----------------------------+
 
 The diagram below illustrate a combined flash.bin container layout:
 
@@ -202,29 +175,11 @@
 
 CSF "Blocks" line for csf_fit.txt can be generated as follows:
 ```
-# fitImage tree
-fit_block_base=$(printf "0x%x" $(( $(sed -n "/CONFIG_TEXT_BASE=/ s@.*=@@p" .config) - $(sed -n "/CONFIG_FIT_EXTERNAL_OFFSET=/ s@.*=@@p" .config) - 0x200 - 0x40)) )
+# fitImage
+fit_block_base=$(printf "0x%x" $(sed -n "/CONFIG_SPL_LOAD_FIT_ADDRESS=/ s@.*=@@p" .config) )
 fit_block_offset=$(printf "0x%s" $(fdtget -t x u-boot.dtb /binman/imx-boot/uboot offset))
-fit_block_size=$(printf "0x%x" $(( ( $(fdtdump u-boot.itb 2>/dev/null | sed -n "/^...totalsize:/ s@.*\(0x[0-9a-f]\+\).*@\1@p") + 0x1000 - 0x1 ) & ~(0x1000 - 0x1) + 0x20 )) )
-sed -i "/Blocks = / s@.*@  Blocks = $fit_block_base $fit_block_offset $fit_block_size \"flash.bin\", \\\\@" csf_fit.tmp
-
-# U-Boot
-uboot_block_base=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/uboot load))
-uboot_block_offset=$(printf "0x%x" $(( $(printf "0x%s" $(fdtget -t x u-boot.itb /images/uboot data-position)) + ${fit_block_offset} )))
-uboot_block_size=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/uboot data-size))
-sed -i "/0xuuuu/ s@.*@           $uboot_block_base $uboot_block_offset $uboot_block_size \"flash.bin\", \\\\@" csf_fit.tmp
-
-# ATF
-atf_block_base=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/atf load))
-atf_block_offset=$(printf "0x%x" $(( $(printf "0x%s" $(fdtget -t x u-boot.itb /images/atf data-position)) + ${fit_block_offset} )))
-atf_block_size=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/atf data-size))
-sed -i "/0xaaaa/ s@.*@           $atf_block_base $atf_block_offset $atf_block_size \"flash.bin\", \\\\@" csf_fit.tmp
-
-# DTB
-dtb_block_base=$(printf "0x%x" $(( ${uboot_block_base} + ${uboot_block_size} )))
-dtb_block_offset=$(printf "0x%x" $(( $(printf "0x%s" $(fdtget -t x u-boot.itb /images/fdt-1 data-position)) + ${fit_block_offset} )))
-dtb_block_size=$(printf "0x%s" $(fdtget -t x u-boot.itb /images/fdt-1 data-size))
-sed -i "/0xdddd/ s@.*@           $dtb_block_base $dtb_block_offset $dtb_block_size \"flash.bin\"@" csf_fit.tmp
+fit_block_size=$(printf "0x%x" $(( ( ( $(stat -tc %s u-boot.itb) + 0x1000 - 0x1 ) & ~(0x1000 - 0x1)) + 0x20 )) )
+sed -i "/Blocks = / s@.*@  Blocks = $fit_block_base $fit_block_offset $fit_block_size \"flash.bin\"@" csf_fit.tmp
 ```
 
 The fitImage part of flash.bin requires separate IVT. Generate the IVT and
@@ -237,8 +192,9 @@
 ivt_block_offset=$((${fit_block_offset} + ${fit_block_size} - 0x20))
 csf_block_offset=$((${ivt_block_offset} + 0x20))
 
-echo "0xd1002041 ${ivt_ptr_base} 0x00000000 0x00000000 0x00000000 ${ivt_block_base} ${csf_block_base} 0x00000000" | xxd -r -p > ivt.bin
+echo "0xd1002041 ${ivt_block_base} 0x00000000 0x00000000 0x00000000 ${ivt_block_base} ${csf_block_base} 0x00000000" | xxd -r -p > ivt.bin
 dd if=ivt.bin of=flash.bin bs=1 seek=${ivt_block_offset} conv=notrunc
+```
 
 To generate CSF signature for the fitImage part of flash.bin container, use CST:
 ```
diff --git a/include/spl.h b/include/spl.h
index 7e0f5ac..98f5732 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -872,12 +872,6 @@
 			    struct spl_boot_device *bootdev);
 
 /**
- * board_spl_fit_post_load - allow process images after loading finished
- * @fit: Pointer to a valid Flattened Image Tree blob
- */
-void board_spl_fit_post_load(const void *fit);
-
-/**
  * board_spl_fit_size_align - specific size align before processing payload
  *
  */
diff --git a/tools/mkimage.h b/tools/mkimage.h
index f5ca65e..d92a3ff 100644
--- a/tools/mkimage.h
+++ b/tools/mkimage.h
@@ -17,6 +17,7 @@
 #include <sys/stat.h>
 #include <time.h>
 #include <unistd.h>
+#include <limits.h>
 #include <u-boot/sha1.h>
 #include "fdt_host.h"
 #include "imagetool.h"
@@ -44,7 +45,7 @@
 #define ALLOC_CACHE_ALIGN_BUFFER(type, name, size) type name[size]
 
 #define MKIMAGE_TMPFILE_SUFFIX		".tmp"
-#define MKIMAGE_MAX_TMPFILE_LEN		256
+#define MKIMAGE_MAX_TMPFILE_LEN		PATH_MAX
 #define MKIMAGE_DEFAULT_DTC_OPTIONS	"-I dts -O dtb -p 500"
 #define MKIMAGE_MAX_DTC_CMDLINE_LEN	2 * MKIMAGE_MAX_TMPFILE_LEN + 35