[PATCH 17/26] scripts: imx: fix i.MX8M CSF header placement
Marco Felsch
m.felsch at pengutronix.de
Tue Oct 10 07:33:05 PDT 2023
The current boot flow is broken if both the FlexSPI image and the HAB
support is enabled. The HAB/CST tool need to take the additional FlexSPI
IVT header into account which is added in between the first IVT header
and the barebox pbl code.
Signed-off-by: Marco Felsch <m.felsch at pengutronix.de>
---
include/mach/imx/imx-header.h | 1 +
scripts/imx/imx-image.c | 9 +++++----
scripts/imx/imx.c | 6 +++++-
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/include/mach/imx/imx-header.h b/include/mach/imx/imx-header.h
index b11b57c37227..0ad3485eb261 100644
--- a/include/mach/imx/imx-header.h
+++ b/include/mach/imx/imx-header.h
@@ -7,6 +7,7 @@
#define HEADER_LEN 0x1000 /* length of the blank area + IVT + DCD */
#define CSF_LEN 0x2000 /* length of the CSF (needed for HAB) */
+#define FLEXSPI_HEADER_LEN HEADER_LEN
#define DEK_BLOB_HEADER 8 /* length of DEK blob header */
#define DEK_BLOB_KEY 32 /* length of DEK blob AES-256 key */
diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c
index ecb16187de17..01da4cc36467 100644
--- a/scripts/imx/imx-image.c
+++ b/scripts/imx/imx-image.c
@@ -408,8 +408,6 @@ static size_t add_flexspi_fcfb_header(const struct config_data *data, void *buf)
return sizeof(nor_conf);
}
-#define FLEXSPI_HEADER_LEN HEADER_LEN
-
static size_t
add_flexspi_header(const struct config_data *data, void **_buf, size_t *header_len)
{
@@ -812,8 +810,11 @@ static int hab_sign(struct config_data *data)
* For i.MX8 insert the CSF data into the reserved CSF area
* right behind the PBL
*/
- offset = roundup(data->header_gap + data->pbl_code_size +
- HEADER_LEN, 0x1000);
+ offset = data->header_gap + data->pbl_code_size + HEADER_LEN;
+ if (flexspi_image(data))
+ offset += FLEXSPI_HEADER_LEN;
+
+ offset = roundup(offset, 0x1000);
if (data->signed_hdmi_firmware_file)
offset += PLUGIN_HDMI_SIZE;
diff --git a/scripts/imx/imx.c b/scripts/imx/imx.c
index 32488455b7a8..b3c13510af84 100644
--- a/scripts/imx/imx.c
+++ b/scripts/imx/imx.c
@@ -332,6 +332,7 @@ static int do_hab_blocks(struct config_data *data, int argc, char *argv[])
int i;
uint32_t signed_size = data->load_size;
uint32_t offset = data->image_ivt_offset;
+ unsigned int hdrlen = HEADER_LEN;
if (!data->csf)
return -EINVAL;
@@ -347,8 +348,11 @@ static int do_hab_blocks(struct config_data *data, int argc, char *argv[])
* Ensure we only sign the PBL for i.MX8MQ
*/
if (data->pbl_code_size && cpu_is_mx8m(data)) {
+ if (flexspi_image(data))
+ hdrlen += FLEXSPI_HEADER_LEN;
+
offset += data->header_gap;
- signed_size = roundup(data->pbl_code_size + HEADER_LEN, 0x1000);
+ signed_size = roundup(data->pbl_code_size + hdrlen, 0x1000);
if (data->signed_hdmi_firmware_file)
offset += PLUGIN_HDMI_SIZE;
}
--
2.39.2
More information about the barebox
mailing list