All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 0/4] mpc8313: ids8313 board updates
@ 2014-05-14 10:54 Heiko Schocher
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable Heiko Schocher
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Heiko Schocher @ 2014-05-14 10:54 UTC (permalink / raw)
  To: u-boot

- introduce CONFIG_IMAGE_FORMAT_LEGACY for enabling
  booting legacy image format. Disable this per default if
  CONFIG_FIT_SIGNATURE is defined.
  As the ids8313 board needs legacy image format and uses
  CONFIG_FIT_SIGNATURE, enable legacy image format for the
  ids8313 board

- add CONFIG_SYS_GENERIC_BOARD to the ids8313 board,
  therefore fdtdec_get_int() is moved out of lib/fdtdec.c
  as lib/fdtdec.c is only compiled if CONFIG_OF_CONTROL
  is defined, but defining this for the ids8313 board
  leads in conjunction with CONFIG_SYS_GENERIC_BOARD
  in booting error:

No valid FDT found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>

  So move the common used function fdtdec_get_int()
  out of lib/fdtdec.c into lib/fdtdec_common.c

Cc: Simon Glass <sjg@chromium.org>
Cc: Kim Phillips <kim.phillips@freescale.com>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Tom Rini <trini@ti.com>
Cc: Michael Conrad <Michael.Conrad@ids.de>

Tested this patchset on the ids8313 board, MAKEALL for powerpc
and arm adds no compiler errors/warnings.

While testing this patchset on the ids8313 board, I found, that
current U-Boot compiles fine with eldk 5.5, but if erasing the
sectors where U-Boot resists in the NOR flash, u-boot commands
are not longer working :-(

$ powerpc-linux-gcc -v
Using built-in specs.
COLLECT_GCC=powerpc-linux-gcc
COLLECT_LTO_WRAPPER=/opt/eldk-5.5/powerpc/sysroots/i686-eldk-linux/usr/libexec/powerpc-linux/gcc/powerpc-linux/4.8.1/lto-wrapper
Target: powerpc-linux
[...]
Thread model: posix
gcc version 4.8.1 (GCC) 
$

This problem does not pop up with eldk 5.4 or 5.3 !

Digged a little bit in it, and found that some (not all!) fmt
strings are loaded from flash addresses not from ram addresses ...

gdb shows:
Program received signal SIGTRAP, Trace/breakpoint trap.
printf (fmt=0xfff5ad34 '\377' <repeats 200 times>..., fmt at entry=0x7fdad34 "parse_stream, end_trigger=%d\n") at /home/hs/ids/u-boot/common/console.c:479
            ^^^^^^^^^^
            addr in nor flash not in ram
479     {
(gdb) bt
#0  printf (fmt=0xfff5ad34 '\377' <repeats 200 times>..., fmt at entry=0x7fdad34 "parse_stream, end_trigger=%d\n") at /home/hs/ids/u-boot/common/console.c:479
#1  0x07f88c4c in parse_stream (end_trigger=10, input=0x775fe00, ctx=0x775fd60, dest=0x775fd7c) at /home/hs/ids/u-boot/common/hush.c:2942
 
this leads, if flash is erased, in a crash ... try to find out
more ...

This problem seems a toolchain problem, as I tried older
U-Boot versions with eldk 5.5 on this board, and all versions
break ... I have no other mpc83xx board handy ... can somebody
try this scenario on a mpc83xx based board? Kim?

Current U-Boot does work fine on a mpc52xx based board compiled
with eldk 5.5, so it seems a mpc83xx specific problem?

Heiko Schocher (4):
  bootm: make use of legacy image format configurable
  mpc8313, signed fit: enable legacy image format on ids8313 board
  lib, fdt: move fdtdec_get_int() out of lib/fdtdec.c
  mpc8313: add CONFIG_SYS_GENERIC_BOARD to ids8313 board

 README                       | 18 ++++++++++++++++++
 common/cmd_bootm.c           | 14 ++++++++++++++
 common/cmd_disk.c            |  4 ++++
 common/cmd_fdc.c             |  4 ++++
 common/cmd_fpga.c            |  2 ++
 common/cmd_nand.c            |  4 ++++
 common/cmd_source.c          |  4 ++++
 common/cmd_ximg.c            |  7 ++++++-
 common/image-fdt.c           | 10 ++++++++--
 common/image.c               | 23 ++++++++++++++++-------
 doc/uImage.FIT/signature.txt |  3 +++
 include/config_defaults.h    |  8 ++++++++
 include/configs/ids8313.h    |  4 +++-
 include/image.h              |  2 ++
 lib/Makefile                 |  1 +
 lib/fdtdec.c                 | 36 ------------------------------------
 lib/fdtdec_common.c          | 33 +++++++++++++++++++++++++++++++++
 tools/fdtdec.c               |  1 +
 18 files changed, 131 insertions(+), 47 deletions(-)
 create mode 100644 lib/fdtdec_common.c

-- 
1.8.3.1

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

* [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable
  2014-05-14 10:54 [U-Boot] [PATCH v2 0/4] mpc8313: ids8313 board updates Heiko Schocher
@ 2014-05-14 10:54 ` Heiko Schocher
  2014-05-14 11:16   ` Michal Simek
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 2/4] mpc8313, signed fit: enable legacy image format on ids8313 board Heiko Schocher
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2014-05-14 10:54 UTC (permalink / raw)
  To: u-boot

make the use of legacy image format configurable through
the config define CONFIG_IMAGE_FORMAT_LEGACY.

When relying on signed FIT images with required signature check
the legacy image format should be disabled. Therefore introduce
this new define and enable legacy image format if CONFIG_FIT_SIGNATURE
is not set. If CONFIG_FIT_SIGNATURE is set disable per default
the legacy image format.

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Cc: Lars Steubesand <lars.steubesand@philips.com>
Cc: Mike Pearce <mike@kaew.be>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Tom Rini <trini@ti.com>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Michael Conrad <Michael.Conrad@ids.de>

---
- changes for v2:
  - make the legacy image format configurable through
    the define CONFIG_IMAGE_FORMAT_LEGACY.

    Default:
    if not CONFIG_FIT_SIGNATURE is defined it is enabled,
    else disabled.

    Disable it with CONFIG_DISABLE_IMAGE_LEGACY if
    CONFIG_FIT_SIGNATURE is not defined.
---
 README                       | 18 ++++++++++++++++++
 common/cmd_bootm.c           | 14 ++++++++++++++
 common/cmd_disk.c            |  4 ++++
 common/cmd_fdc.c             |  4 ++++
 common/cmd_fpga.c            |  2 ++
 common/cmd_nand.c            |  4 ++++
 common/cmd_source.c          |  4 ++++
 common/cmd_ximg.c            |  7 ++++++-
 common/image-fdt.c           | 10 ++++++++--
 common/image.c               | 23 ++++++++++++++++-------
 doc/uImage.FIT/signature.txt |  3 +++
 include/config_defaults.h    |  8 ++++++++
 include/image.h              |  2 ++
 13 files changed, 93 insertions(+), 10 deletions(-)

diff --git a/README b/README
index 5f89552..2f07cbb 100644
--- a/README
+++ b/README
@@ -3157,6 +3157,19 @@ FIT uImage format:
  -150	common/cmd_nand.c	Incorrect FIT image format
   151	common/cmd_nand.c	FIT image format OK
 
+- legacy image format:
+		CONFIG_IMAGE_FORMAT_LEGACY
+		enables the legacy image format support in U-Boot.
+
+		Default:
+		enabled if CONFIG_FIT_SIGNATURE is not defined.
+
+		CONFIG_DISABLE_IMAGE_LEGACY
+		disable the legacy image format
+
+		This define is introduced, as the legacy image format is
+		enabled per default for backward compatibility.
+
 - FIT image support:
 		CONFIG_FIT
 		Enable support for the FIT uImage format.
@@ -3173,6 +3186,11 @@ FIT uImage format:
 		using a hash signed and verified using RSA. See
 		doc/uImage.FIT/signature.txt for more details.
 
+		WARNING: When relying on signed FIT images with required
+		signature check the legacy image format is default
+		disabled. If a board need legacy image format support
+		enable this through CONFIG_IMAGE_FORMAT_LEGACY
+
 - Standalone program support:
 		CONFIG_STANDALONE_LOAD_ADDR
 
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index e683af3..21d0234 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -233,6 +233,7 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc,
 
 	/* get image parameters */
 	switch (genimg_get_format(os_hdr)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	case IMAGE_FORMAT_LEGACY:
 		images.os.type = image_get_type(os_hdr);
 		images.os.comp = image_get_comp(os_hdr);
@@ -241,6 +242,7 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc,
 		images.os.end = image_get_image_end(os_hdr);
 		images.os.load = image_get_load(os_hdr);
 		break;
+#endif
 #if defined(CONFIG_FIT)
 	case IMAGE_FORMAT_FIT:
 		if (fit_image_get_type(images.fit_hdr_os,
@@ -838,6 +840,7 @@ int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
 	return 0;
 }
 
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 /**
  * image_get_kernel - verify legacy format kernel image
  * @img_addr: in RAM address of the legacy format image to be verified
@@ -888,6 +891,7 @@ static image_header_t *image_get_kernel(ulong img_addr, int verify)
 	}
 	return hdr;
 }
+#endif
 
 /**
  * boot_get_kernel - find kernel image
@@ -905,7 +909,9 @@ static const void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
 		char * const argv[], bootm_headers_t *images, ulong *os_data,
 		ulong *os_len)
 {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	image_header_t	*hdr;
+#endif
 	ulong		img_addr;
 	const void *buf;
 #if defined(CONFIG_FIT)
@@ -943,6 +949,7 @@ static const void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
 	*os_data = *os_len = 0;
 	buf = map_sysmem(img_addr, 0);
 	switch (genimg_get_format(buf)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	case IMAGE_FORMAT_LEGACY:
 		printf("## Booting kernel from Legacy Image at %08lx ...\n",
 				img_addr);
@@ -985,6 +992,7 @@ static const void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
 		images->legacy_hdr_valid = 1;
 		bootstage_mark(BOOTSTAGE_ID_DECOMP_IMAGE);
 		break;
+#endif
 #if defined(CONFIG_FIT)
 	case IMAGE_FORMAT_FIT:
 		os_noffset = fit_image_load(images, FIT_KERNEL_PROP,
@@ -1114,6 +1122,7 @@ static int image_info(ulong addr)
 	printf("\n## Checking Image at %08lx ...\n", addr);
 
 	switch (genimg_get_format(hdr)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	case IMAGE_FORMAT_LEGACY:
 		puts("   Legacy image found\n");
 		if (!image_check_magic(hdr)) {
@@ -1135,6 +1144,7 @@ static int image_info(ulong addr)
 		}
 		puts("OK\n");
 		return 0;
+#endif
 #if defined(CONFIG_FIT)
 	case IMAGE_FORMAT_FIT:
 		puts("   FIT image found\n");
@@ -1194,6 +1204,7 @@ static int do_imls_nor(void)
 				goto next_sector;
 
 			switch (genimg_get_format(hdr)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 			case IMAGE_FORMAT_LEGACY:
 				if (!image_check_hcrc(hdr))
 					goto next_sector;
@@ -1208,6 +1219,7 @@ static int do_imls_nor(void)
 					puts("OK\n");
 				}
 				break;
+#endif
 #if defined(CONFIG_FIT)
 			case IMAGE_FORMAT_FIT:
 				if (!fit_check_format(hdr))
@@ -1342,12 +1354,14 @@ static int do_imls_nand(void)
 			}
 
 			switch (genimg_get_format(buffer)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 			case IMAGE_FORMAT_LEGACY:
 				header = (const image_header_t *)buffer;
 
 				len = image_get_image_size(header);
 				nand_imls_legacyimage(nand, nand_dev, off, len);
 				break;
+#endif
 #if defined(CONFIG_FIT)
 			case IMAGE_FORMAT_FIT:
 				len = fit_get_size(buffer);
diff --git a/common/cmd_disk.c b/common/cmd_disk.c
index 3e457f6..8a1fda9 100644
--- a/common/cmd_disk.c
+++ b/common/cmd_disk.c
@@ -17,7 +17,9 @@ int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
 	ulong addr = CONFIG_SYS_LOAD_ADDR;
 	ulong cnt;
 	disk_partition_t info;
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	image_header_t *hdr;
+#endif
 	block_dev_desc_t *dev_desc;
 
 #if defined(CONFIG_FIT)
@@ -62,6 +64,7 @@ int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
 	bootstage_mark(BOOTSTAGE_ID_IDE_PART_READ);
 
 	switch (genimg_get_format((void *) addr)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	case IMAGE_FORMAT_LEGACY:
 		hdr = (image_header_t *) addr;
 
@@ -78,6 +81,7 @@ int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
 
 		cnt = image_get_image_size(hdr);
 		break;
+#endif
 #if defined(CONFIG_FIT)
 	case IMAGE_FORMAT_FIT:
 		fit_hdr = (const void *) addr;
diff --git a/common/cmd_fdc.c b/common/cmd_fdc.c
index 1cfb656..5766b56 100644
--- a/common/cmd_fdc.c
+++ b/common/cmd_fdc.c
@@ -635,7 +635,9 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	FD_GEO_STRUCT *pFG = (FD_GEO_STRUCT *)floppy_type;
 	FDC_COMMAND_STRUCT *pCMD = &cmd;
 	unsigned long addr,imsize;
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	image_header_t *hdr;  /* used for fdc boot */
+#endif
 	unsigned char boot_drive;
 	int i,nrofblk;
 #if defined(CONFIG_FIT)
@@ -689,12 +691,14 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	}
 
 	switch (genimg_get_format ((void *)addr)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	case IMAGE_FORMAT_LEGACY:
 		hdr = (image_header_t *)addr;
 		image_print_contents (hdr);
 
 		imsize = image_get_image_size (hdr);
 		break;
+#endif
 #if defined(CONFIG_FIT)
 	case IMAGE_FORMAT_FIT:
 		fit_hdr = (const void *)addr;
diff --git a/common/cmd_fpga.c b/common/cmd_fpga.c
index 010cd24..f8c5e10 100644
--- a/common/cmd_fpga.c
+++ b/common/cmd_fpga.c
@@ -155,6 +155,7 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 
 	case FPGA_LOADMK:
 		switch (genimg_get_format(fpga_data)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 		case IMAGE_FORMAT_LEGACY:
 			{
 				image_header_t *hdr =
@@ -182,6 +183,7 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 				rc = fpga_load(dev, (void *)data, data_size);
 			}
 			break;
+#endif
 #if defined(CONFIG_FIT)
 		case IMAGE_FORMAT_FIT:
 			{
diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 04ab0f1..5c3ad12 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -904,7 +904,9 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 	int r;
 	char *s;
 	size_t cnt;
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	image_header_t *hdr;
+#endif
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -930,6 +932,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 	bootstage_mark(BOOTSTAGE_ID_NAND_HDR_READ);
 
 	switch (genimg_get_format ((void *)addr)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	case IMAGE_FORMAT_LEGACY:
 		hdr = (image_header_t *)addr;
 
@@ -938,6 +941,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 
 		cnt = image_get_image_size (hdr);
 		break;
+#endif
 #if defined(CONFIG_FIT)
 	case IMAGE_FORMAT_FIT:
 		fit_hdr = (const void *)addr;
diff --git a/common/cmd_source.c b/common/cmd_source.c
index 54ffd16..f3e9e60 100644
--- a/common/cmd_source.c
+++ b/common/cmd_source.c
@@ -29,7 +29,9 @@ int
 source (ulong addr, const char *fit_uname)
 {
 	ulong		len;
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	const image_header_t *hdr;
+#endif
 	ulong		*data;
 	int		verify;
 	void *buf;
@@ -44,6 +46,7 @@ source (ulong addr, const char *fit_uname)
 
 	buf = map_sysmem(addr, 0);
 	switch (genimg_get_format(buf)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	case IMAGE_FORMAT_LEGACY:
 		hdr = buf;
 
@@ -84,6 +87,7 @@ source (ulong addr, const char *fit_uname)
 		 */
 		while (*data++);
 		break;
+#endif
 #if defined(CONFIG_FIT)
 	case IMAGE_FORMAT_FIT:
 		if (fit_uname == NULL) {
diff --git a/common/cmd_ximg.c b/common/cmd_ximg.c
index 65a8319..813543a 100644
--- a/common/cmd_ximg.c
+++ b/common/cmd_ximg.c
@@ -32,10 +32,13 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 {
 	ulong		addr = load_addr;
 	ulong		dest = 0;
-	ulong		data, len, count;
+	ulong		data, len;
 	int		verify;
 	int		part = 0;
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
+	ulong		count;
 	image_header_t	*hdr = NULL;
+#endif
 #if defined(CONFIG_FIT)
 	const char	*uname = NULL;
 	const void*	fit_hdr;
@@ -64,6 +67,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 	}
 
 	switch (genimg_get_format((void *)addr)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	case IMAGE_FORMAT_LEGACY:
 
 		printf("## Copying part %d from legacy image "
@@ -114,6 +118,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 
 		image_multi_getimg(hdr, part, &data, &len);
 		break;
+#endif
 #if defined(CONFIG_FIT)
 	case IMAGE_FORMAT_FIT:
 		if (uname == NULL) {
diff --git a/common/image-fdt.c b/common/image-fdt.c
index 5d64009..ac4563f 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -29,6 +29,7 @@ static void fdt_error(const char *msg)
 	puts(" - must RESET the board to recover.\n");
 }
 
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 static const image_header_t *image_get_fdt(ulong fdt_addr)
 {
 	const image_header_t *fdt_hdr = map_sysmem(fdt_addr, 0);
@@ -61,6 +62,7 @@ static const image_header_t *image_get_fdt(ulong fdt_addr)
 	}
 	return fdt_hdr;
 }
+#endif
 
 /**
  * boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable
@@ -220,11 +222,13 @@ error:
 int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
 		bootm_headers_t *images, char **of_flat_tree, ulong *of_size)
 {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	const image_header_t *fdt_hdr;
+	ulong		load, load_end;
+	ulong		image_start, image_data, image_end;
+#endif
 	ulong		fdt_addr;
 	char		*fdt_blob = NULL;
-	ulong		image_start, image_data, image_end;
-	ulong		load, load_end;
 	void		*buf;
 #if defined(CONFIG_FIT)
 	const char	*fit_uname_config = images->fit_uname_cfg;
@@ -298,6 +302,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
 		 */
 		buf = map_sysmem(fdt_addr, 0);
 		switch (genimg_get_format(buf)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 		case IMAGE_FORMAT_LEGACY:
 			/* verify fdt_addr points to a valid image header */
 			printf("## Flattened Device Tree from Legacy Image at %08lx\n",
@@ -337,6 +342,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
 
 			fdt_addr = load;
 			break;
+#endif
 		case IMAGE_FORMAT_FIT:
 			/*
 			 * This case will catch both: new uImage format
diff --git a/common/image.c b/common/image.c
index fcc5a9c..79dafdf 100644
--- a/common/image.c
+++ b/common/image.c
@@ -44,8 +44,10 @@ extern int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch,
 						int verify);
+#endif
 #else
 #include "mkimage.h"
 #include <u-boot/md5.h>
@@ -329,6 +331,7 @@ void image_print_contents(const void *ptr)
 
 
 #ifndef USE_HOSTCC
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 /**
  * image_get_ramdisk - get and verify ramdisk image
  * @rd_addr: ramdisk image start address
@@ -390,6 +393,7 @@ static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch,
 
 	return rd_hdr;
 }
+#endif
 #endif /* !USE_HOSTCC */
 
 /*****************************************************************************/
@@ -653,20 +657,19 @@ int genimg_get_comp_id(const char *name)
  */
 int genimg_get_format(const void *img_addr)
 {
-	ulong format = IMAGE_FORMAT_INVALID;
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	const image_header_t *hdr;
 
 	hdr = (const image_header_t *)img_addr;
 	if (image_check_magic(hdr))
-		format = IMAGE_FORMAT_LEGACY;
+		return IMAGE_FORMAT_LEGACY;
+#endif
 #if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT)
-	else {
-		if (fdt_check_header(img_addr) == 0)
-			format = IMAGE_FORMAT_FIT;
-	}
+	if (fdt_check_header(img_addr) == 0)
+			return IMAGE_FORMAT_FIT;
 #endif
 
-	return format;
+	return IMAGE_FORMAT_INVALID;
 }
 
 /**
@@ -708,12 +711,14 @@ ulong genimg_get_image(ulong img_addr)
 
 		/* get data size */
 		switch (genimg_get_format(buf)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 		case IMAGE_FORMAT_LEGACY:
 			d_size = image_get_data_size(buf);
 			debug("   Legacy format image found at 0x%08lx, "
 					"size 0x%08lx\n",
 					ram_addr, d_size);
 			break;
+#endif
 #if defined(CONFIG_FIT)
 		case IMAGE_FORMAT_FIT:
 			d_size = fit_get_size(buf) - h_size;
@@ -789,7 +794,9 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
 {
 	ulong rd_addr, rd_load;
 	ulong rd_data, rd_len;
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 	const image_header_t *rd_hdr;
+#endif
 	void *buf;
 #ifdef CONFIG_SUPPORT_RAW_INITRD
 	char *end;
@@ -872,6 +879,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
 		 */
 		buf = map_sysmem(rd_addr, 0);
 		switch (genimg_get_format(buf)) {
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 		case IMAGE_FORMAT_LEGACY:
 			printf("## Loading init Ramdisk from Legacy "
 					"Image at %08lx ...\n", rd_addr);
@@ -887,6 +895,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
 			rd_len = image_get_data_size(rd_hdr);
 			rd_load = image_get_load(rd_hdr);
 			break;
+#endif
 #if defined(CONFIG_FIT)
 		case IMAGE_FORMAT_FIT:
 			rd_noffset = fit_image_load(images, FIT_RAMDISK_PROP,
diff --git a/doc/uImage.FIT/signature.txt b/doc/uImage.FIT/signature.txt
index 9502037..672dc35 100644
--- a/doc/uImage.FIT/signature.txt
+++ b/doc/uImage.FIT/signature.txt
@@ -328,6 +328,9 @@ be enabled:
 CONFIG_FIT_SIGNATURE - enable signing and verfication in FITs
 CONFIG_RSA - enable RSA algorithm for signing
 
+WARNING: When relying on signed FIT images with required signature check
+the legacy image format is default disabled by not defining
+CONFIG_IMAGE_FORMAT_LEGACY
 
 Testing
 -------
diff --git a/include/config_defaults.h b/include/config_defaults.h
index ad08c1d..fbe0743 100644
--- a/include/config_defaults.h
+++ b/include/config_defaults.h
@@ -20,4 +20,12 @@
 #define CONFIG_ZLIB 1
 #define CONFIG_PARTITIONS 1
 
+#ifndef CONFIG_FIT_SIGNATURE
+#define CONFIG_IMAGE_FORMAT_LEGACY
+#endif
+
+#ifdef CONFIG_DISABLE_IMAGE_LEGACY
+#undef CONFIG_IMAGE_FORMAT_LEGACY
+#endif
+
 #endif
diff --git a/include/image.h b/include/image.h
index b278778..cde58a6 100644
--- a/include/image.h
+++ b/include/image.h
@@ -411,7 +411,9 @@ enum fit_load_op {
 #ifndef USE_HOSTCC
 /* Image format types, returned by _get_format() routine */
 #define IMAGE_FORMAT_INVALID	0x00
+#if defined(CONFIG_IMAGE_FORMAT_LEGACY)
 #define IMAGE_FORMAT_LEGACY	0x01	/* legacy image_header based format */
+#endif
 #define IMAGE_FORMAT_FIT	0x02	/* new, libfdt based format */
 
 int genimg_get_format(const void *img_addr);
-- 
1.8.3.1

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

* [U-Boot] [PATCH v2 2/4] mpc8313, signed fit: enable legacy image format on ids8313 board
  2014-05-14 10:54 [U-Boot] [PATCH v2 0/4] mpc8313: ids8313 board updates Heiko Schocher
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable Heiko Schocher
@ 2014-05-14 10:54 ` Heiko Schocher
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 3/4] lib, fdt: move fdtdec_get_int() out of lib/fdtdec.c Heiko Schocher
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 4/4] mpc8313: add CONFIG_SYS_GENERIC_BOARD to ids8313 board Heiko Schocher
  3 siblings, 0 replies; 10+ messages in thread
From: Heiko Schocher @ 2014-05-14 10:54 UTC (permalink / raw)
  To: u-boot

Enable legacy image format with CONFIG_IMAGE_FORMAT_LEGACY
on the ids8313 board, as it uses signed FIT images for booting
Linux and need the legacy image format.

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Cc: Kim Phillips <kim.phillips@freescale.com>
Cc: Michael Conrad <Michael.Conrad@ids.de>

---
- changes for v2:
  - enable (not disable) the legacy image format for this board
---
 include/configs/ids8313.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/configs/ids8313.h b/include/configs/ids8313.h
index c1b3b63..1de5750 100644
--- a/include/configs/ids8313.h
+++ b/include/configs/ids8313.h
@@ -576,6 +576,7 @@
 
 #define CONFIG_FIT
 #define CONFIG_FIT_SIGNATURE
+#define CONFIG_IMAGE_FORMAT_LEGACY
 #define CONFIG_CMD_FDT
 #define CONFIG_CMD_HASH
 #define CONFIG_RSA
-- 
1.8.3.1

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

* [U-Boot] [PATCH v2 3/4] lib, fdt: move fdtdec_get_int() out of lib/fdtdec.c
  2014-05-14 10:54 [U-Boot] [PATCH v2 0/4] mpc8313: ids8313 board updates Heiko Schocher
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable Heiko Schocher
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 2/4] mpc8313, signed fit: enable legacy image format on ids8313 board Heiko Schocher
@ 2014-05-14 10:54 ` Heiko Schocher
  2014-05-15  1:49   ` Simon Glass
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 4/4] mpc8313: add CONFIG_SYS_GENERIC_BOARD to ids8313 board Heiko Schocher
  3 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2014-05-14 10:54 UTC (permalink / raw)
  To: u-boot

move fdtdec_get_int() out of lib/fdtdec.c into lib/fdtdec_common.c
as this function is also used, if CONFIG_OF_CONTROL is not
used. Poped up on the ids8313 board using signed FIT images,
and activating CONFIG_SYS_GENERIC_BOARD. Without this patch
it shows on boot:

No valid FDT found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>

With this patch, it boots again with CONFIG_SYS_GENERIC_BOARD
enabled.

Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@ti.com>
Cc: Michael Conrad <Michael.Conrad@ids.de>

---
- changes for v2:
  - remove fdtdec_get_int() in lib/fdtdec.c
  - only one fdtdec_get_int() implementation
     Tested on the ids8313 board (on host and target side)
---
 lib/Makefile        |  1 +
 lib/fdtdec.c        | 36 ------------------------------------
 lib/fdtdec_common.c | 33 +++++++++++++++++++++++++++++++++
 tools/fdtdec.c      |  1 +
 4 files changed, 35 insertions(+), 36 deletions(-)
 create mode 100644 lib/fdtdec_common.c

diff --git a/lib/Makefile b/lib/Makefile
index 27e4f78..a3a237f 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -23,6 +23,7 @@ obj-$(CONFIG_USB_TTY) += circbuf.o
 obj-y += crc7.o
 obj-y += crc8.o
 obj-y += crc16.o
+obj-y += fdtdec_common.o
 obj-$(CONFIG_OF_CONTROL) += fdtdec.o
 obj-$(CONFIG_TEST_FDTDEC) += fdtdec_test.o
 obj-$(CONFIG_GZIP) += gunzip.o
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 8ecb80f..21d5e85 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -109,24 +109,6 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node,
 	return fdtdec_get_addr_size(blob, node, prop_name, NULL);
 }
 
-s32 fdtdec_get_int(const void *blob, int node, const char *prop_name,
-		s32 default_val)
-{
-	const s32 *cell;
-	int len;
-
-	debug("%s: %s: ", __func__, prop_name);
-	cell = fdt_getprop(blob, node, prop_name, &len);
-	if (cell && len >= sizeof(s32)) {
-		s32 val = fdt32_to_cpu(cell[0]);
-
-		debug("%#x (%d)\n", val, val);
-		return val;
-	}
-	debug("(not found)\n");
-	return default_val;
-}
-
 uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name,
 		uint64_t default_val)
 {
@@ -646,22 +628,4 @@ int fdtdec_read_fmap_entry(const void *blob, int node, const char *name,
 
 	return 0;
 }
-#else
-#include "libfdt.h"
-#include "fdt_support.h"
-
-int fdtdec_get_int(const void *blob, int node, const char *prop_name,
-		int default_val)
-{
-	const int *cell;
-	int len;
-
-	cell = fdt_getprop_w((void *)blob, node, prop_name, &len);
-	if (cell && len >= sizeof(int)) {
-		int val = fdt32_to_cpu(cell[0]);
-
-		return val;
-	}
-	return default_val;
-}
 #endif
diff --git a/lib/fdtdec_common.c b/lib/fdtdec_common.c
new file mode 100644
index 0000000..c03016c
--- /dev/null
+++ b/lib/fdtdec_common.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014
+ * Heiko Schocher, DENX Software Engineering, hs at denx.de.
+ *
+ * Based on lib/fdtdec.c:
+ * Copyright (c) 2011 The Chromium OS Authors.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef USE_HOSTCC
+#include <common.h>
+#include <libfdt.h>
+#include <fdtdec.h>
+#else
+#include "libfdt.h"
+#include "fdt_support.h"
+#endif
+
+int fdtdec_get_int(const void *blob, int node, const char *prop_name,
+		int default_val)
+{
+	const int *cell;
+	int len;
+
+	cell = fdt_getprop_w((void *)blob, node, prop_name, &len);
+	if (cell && len >= sizeof(int)) {
+		int val = fdt32_to_cpu(cell[0]);
+
+		return val;
+	}
+	return default_val;
+}
diff --git a/tools/fdtdec.c b/tools/fdtdec.c
index f1c2256..9987f83 100644
--- a/tools/fdtdec.c
+++ b/tools/fdtdec.c
@@ -1 +1,2 @@
+#include "../lib/fdtdec_common.c"
 #include "../lib/fdtdec.c"
-- 
1.8.3.1

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

* [U-Boot] [PATCH v2 4/4] mpc8313: add CONFIG_SYS_GENERIC_BOARD to ids8313 board
  2014-05-14 10:54 [U-Boot] [PATCH v2 0/4] mpc8313: ids8313 board updates Heiko Schocher
                   ` (2 preceding siblings ...)
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 3/4] lib, fdt: move fdtdec_get_int() out of lib/fdtdec.c Heiko Schocher
@ 2014-05-14 10:54 ` Heiko Schocher
  3 siblings, 0 replies; 10+ messages in thread
From: Heiko Schocher @ 2014-05-14 10:54 UTC (permalink / raw)
  To: u-boot

- add CONFIG_SYS_GENERIC_BOARD
- remove CONFIG_OF_CONTROL to boot again

Signed-off-by: Heiko Schocher <hs@denx.de>
Acked-by: Kim Phillips <kim.phillips@freescale.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Michael Conrad <Michael.Conrad@ids.de>

---
- changes for v2:
  - added acked-by from Kim
---
 include/configs/ids8313.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/configs/ids8313.h b/include/configs/ids8313.h
index 1de5750..3e55247 100644
--- a/include/configs/ids8313.h
+++ b/include/configs/ids8313.h
@@ -19,6 +19,8 @@
 #define CONFIG_MPC8313
 #define CONFIG_IDS8313
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 #define CONFIG_FSL_ELBC
 
 #define CONFIG_MISC_INIT_R
@@ -582,6 +584,5 @@
 #define CONFIG_RSA
 #define CONFIG_SHA1
 #define CONFIG_SHA256
-#define CONFIG_OF_CONTROL
 
 #endif	/* __CONFIG_H */
-- 
1.8.3.1

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

* [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable Heiko Schocher
@ 2014-05-14 11:16   ` Michal Simek
  2014-05-15  5:47     ` Heiko Schocher
  0 siblings, 1 reply; 10+ messages in thread
From: Michal Simek @ 2014-05-14 11:16 UTC (permalink / raw)
  To: u-boot

On 05/14/2014 12:54 PM, Heiko Schocher wrote:
> make the use of legacy image format configurable through
> the config define CONFIG_IMAGE_FORMAT_LEGACY.
> 
> When relying on signed FIT images with required signature check
> the legacy image format should be disabled. Therefore introduce
> this new define and enable legacy image format if CONFIG_FIT_SIGNATURE
> is not set. If CONFIG_FIT_SIGNATURE is set disable per default
> the legacy image format.
> 
> Signed-off-by: Heiko Schocher <hs@denx.de>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Lars Steubesand <lars.steubesand@philips.com>
> Cc: Mike Pearce <mike@kaew.be>
> Cc: Wolfgang Denk <wd@denx.de>
> Cc: Tom Rini <trini@ti.com>
> Cc: Michal Simek <monstr@monstr.eu>
> Cc: Michael Conrad <Michael.Conrad@ids.de>
> 
> ---
> - changes for v2:
>   - make the legacy image format configurable through
>     the define CONFIG_IMAGE_FORMAT_LEGACY.
> 
>     Default:
>     if not CONFIG_FIT_SIGNATURE is defined it is enabled,
>     else disabled.
> 
>     Disable it with CONFIG_DISABLE_IMAGE_LEGACY if
>     CONFIG_FIT_SIGNATURE is not defined.

Just a note that ifdef CONFIG_IMAGE_FORMAT_LEGACY
should be also used in SPL code.
But that means that FIT image with signature feature
should be enabled for SPL.

If possible please also enable CONFIG_IMAGE_FORMAT_LEGACY
for zynq because we are using legacy formats too.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 263 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140514/891de613/attachment.pgp>

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

* [U-Boot] [PATCH v2 3/4] lib, fdt: move fdtdec_get_int() out of lib/fdtdec.c
  2014-05-14 10:54 ` [U-Boot] [PATCH v2 3/4] lib, fdt: move fdtdec_get_int() out of lib/fdtdec.c Heiko Schocher
@ 2014-05-15  1:49   ` Simon Glass
  2014-05-15  5:53     ` Heiko Schocher
  0 siblings, 1 reply; 10+ messages in thread
From: Simon Glass @ 2014-05-15  1:49 UTC (permalink / raw)
  To: u-boot

Hi Heiko,

On 14 May 2014 04:54, Heiko Schocher <hs@denx.de> wrote:
> move fdtdec_get_int() out of lib/fdtdec.c into lib/fdtdec_common.c
> as this function is also used, if CONFIG_OF_CONTROL is not
> used. Poped up on the ids8313 board using signed FIT images,
> and activating CONFIG_SYS_GENERIC_BOARD. Without this patch
> it shows on boot:
>
> No valid FDT found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>
>
> With this patch, it boots again with CONFIG_SYS_GENERIC_BOARD
> enabled.
>
> Signed-off-by: Heiko Schocher <hs@denx.de>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@ti.com>
> Cc: Michael Conrad <Michael.Conrad@ids.de>
>
> ---
> - changes for v2:
>   - remove fdtdec_get_int() in lib/fdtdec.c
>   - only one fdtdec_get_int() implementation
>      Tested on the ids8313 board (on host and target side)
> ---
>  lib/Makefile        |  1 +
>  lib/fdtdec.c        | 36 ------------------------------------
>  lib/fdtdec_common.c | 33 +++++++++++++++++++++++++++++++++
>  tools/fdtdec.c      |  1 +
>  4 files changed, 35 insertions(+), 36 deletions(-)
>  create mode 100644 lib/fdtdec_common.c
>
> diff --git a/lib/Makefile b/lib/Makefile
> index 27e4f78..a3a237f 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -23,6 +23,7 @@ obj-$(CONFIG_USB_TTY) += circbuf.o
>  obj-y += crc7.o
>  obj-y += crc8.o
>  obj-y += crc16.o
> +obj-y += fdtdec_common.o
>  obj-$(CONFIG_OF_CONTROL) += fdtdec.o
>  obj-$(CONFIG_TEST_FDTDEC) += fdtdec_test.o
>  obj-$(CONFIG_GZIP) += gunzip.o
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index 8ecb80f..21d5e85 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -109,24 +109,6 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node,
>         return fdtdec_get_addr_size(blob, node, prop_name, NULL);
>  }
>
> -s32 fdtdec_get_int(const void *blob, int node, const char *prop_name,
> -               s32 default_val)
> -{
> -       const s32 *cell;
> -       int len;
> -
> -       debug("%s: %s: ", __func__, prop_name);
> -       cell = fdt_getprop(blob, node, prop_name, &len);
> -       if (cell && len >= sizeof(s32)) {
> -               s32 val = fdt32_to_cpu(cell[0]);
> -
> -               debug("%#x (%d)\n", val, val);
> -               return val;
> -       }
> -       debug("(not found)\n");
> -       return default_val;
> -}
> -
>  uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name,
>                 uint64_t default_val)
>  {
> @@ -646,22 +628,4 @@ int fdtdec_read_fmap_entry(const void *blob, int node, const char *name,
>
>         return 0;
>  }
> -#else
> -#include "libfdt.h"
> -#include "fdt_support.h"
> -
> -int fdtdec_get_int(const void *blob, int node, const char *prop_name,
> -               int default_val)
> -{
> -       const int *cell;
> -       int len;
> -
> -       cell = fdt_getprop_w((void *)blob, node, prop_name, &len);
> -       if (cell && len >= sizeof(int)) {
> -               int val = fdt32_to_cpu(cell[0]);
> -
> -               return val;
> -       }
> -       return default_val;
> -}
>  #endif
> diff --git a/lib/fdtdec_common.c b/lib/fdtdec_common.c
> new file mode 100644
> index 0000000..c03016c
> --- /dev/null
> +++ b/lib/fdtdec_common.c
> @@ -0,0 +1,33 @@
> +/*
> + * Copyright (c) 2014
> + * Heiko Schocher, DENX Software Engineering, hs at denx.de.
> + *
> + * Based on lib/fdtdec.c:
> + * Copyright (c) 2011 The Chromium OS Authors.
> + *
> + * SPDX-License-Identifier:    GPL-2.0+
> + */
> +
> +#ifndef USE_HOSTCC
> +#include <common.h>
> +#include <libfdt.h>
> +#include <fdtdec.h>
> +#else
> +#include "libfdt.h"
> +#include "fdt_support.h"
> +#endif
> +
> +int fdtdec_get_int(const void *blob, int node, const char *prop_name,
> +               int default_val)
> +{
> +       const int *cell;
> +       int len;
> +
> +       cell = fdt_getprop_w((void *)blob, node, prop_name, &len);

Is it possible to use fdt_getprop() here and avoid the cast?

> +       if (cell && len >= sizeof(int)) {
> +               int val = fdt32_to_cpu(cell[0]);
> +
> +               return val;
> +       }
> +       return default_val;
> +}
> diff --git a/tools/fdtdec.c b/tools/fdtdec.c
> index f1c2256..9987f83 100644
> --- a/tools/fdtdec.c
> +++ b/tools/fdtdec.c
> @@ -1 +1,2 @@
> +#include "../lib/fdtdec_common.c"
>  #include "../lib/fdtdec.c"
> --
> 1.8.3.1
>

Regards,
Simon

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

* [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable
  2014-05-14 11:16   ` Michal Simek
@ 2014-05-15  5:47     ` Heiko Schocher
  2014-05-15  8:54       ` Michal Simek
  0 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2014-05-15  5:47 UTC (permalink / raw)
  To: u-boot

Hello Michal,

Am 14.05.2014 13:16, schrieb Michal Simek:
> On 05/14/2014 12:54 PM, Heiko Schocher wrote:
>> make the use of legacy image format configurable through
>> the config define CONFIG_IMAGE_FORMAT_LEGACY.
>>
>> When relying on signed FIT images with required signature check
>> the legacy image format should be disabled. Therefore introduce
>> this new define and enable legacy image format if CONFIG_FIT_SIGNATURE
>> is not set. If CONFIG_FIT_SIGNATURE is set disable per default
>> the legacy image format.
>>
>> Signed-off-by: Heiko Schocher<hs@denx.de>
>> Cc: Simon Glass<sjg@chromium.org>
>> Cc: Lars Steubesand<lars.steubesand@philips.com>
>> Cc: Mike Pearce<mike@kaew.be>
>> Cc: Wolfgang Denk<wd@denx.de>
>> Cc: Tom Rini<trini@ti.com>
>> Cc: Michal Simek<monstr@monstr.eu>
>> Cc: Michael Conrad<Michael.Conrad@ids.de>
>>
>> ---
>> - changes for v2:
>>    - make the legacy image format configurable through
>>      the define CONFIG_IMAGE_FORMAT_LEGACY.
>>
>>      Default:
>>      if not CONFIG_FIT_SIGNATURE is defined it is enabled,
>>      else disabled.
>>
>>      Disable it with CONFIG_DISABLE_IMAGE_LEGACY if
>>      CONFIG_FIT_SIGNATURE is not defined.
>
> Just a note that ifdef CONFIG_IMAGE_FORMAT_LEGACY
> should be also used in SPL code.

I think thats the case, as I did the default settings in
include/config_defaults.h and a MAKEALL for arm and powerpc
dropped no compiler errors/warnings.

This is just a first step to deactivate legacy image format.
A complete remove patch of it needs more work/time ...

> But that means that FIT image with signature feature
> should be enabled for SPL.

Why?

> If possible please also enable CONFIG_IMAGE_FORMAT_LEGACY
> for zynq because we are using legacy formats too.

You mean in "include/configs/zynq-common.h" ?
Prepared this for v3, but I could not test it...

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

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

* [U-Boot] [PATCH v2 3/4] lib, fdt: move fdtdec_get_int() out of lib/fdtdec.c
  2014-05-15  1:49   ` Simon Glass
@ 2014-05-15  5:53     ` Heiko Schocher
  0 siblings, 0 replies; 10+ messages in thread
From: Heiko Schocher @ 2014-05-15  5:53 UTC (permalink / raw)
  To: u-boot

Hello Simon,

Am 15.05.2014 03:49, schrieb Simon Glass:
> Hi Heiko,
>
> On 14 May 2014 04:54, Heiko Schocher<hs@denx.de>  wrote:
>> move fdtdec_get_int() out of lib/fdtdec.c into lib/fdtdec_common.c
>> as this function is also used, if CONFIG_OF_CONTROL is not
>> used. Poped up on the ids8313 board using signed FIT images,
>> and activating CONFIG_SYS_GENERIC_BOARD. Without this patch
>> it shows on boot:
>>
>> No valid FDT found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d<file.dtb>
>>
>> With this patch, it boots again with CONFIG_SYS_GENERIC_BOARD
>> enabled.
>>
>> Signed-off-by: Heiko Schocher<hs@denx.de>
>> Cc: Simon Glass<sjg@chromium.org>
>> Cc: Tom Rini<trini@ti.com>
>> Cc: Michael Conrad<Michael.Conrad@ids.de>
>>
>> ---
>> - changes for v2:
>>    - remove fdtdec_get_int() in lib/fdtdec.c
>>    - only one fdtdec_get_int() implementation
>>       Tested on the ids8313 board (on host and target side)
>> ---
>>   lib/Makefile        |  1 +
>>   lib/fdtdec.c        | 36 ------------------------------------
>>   lib/fdtdec_common.c | 33 +++++++++++++++++++++++++++++++++
>>   tools/fdtdec.c      |  1 +
>>   4 files changed, 35 insertions(+), 36 deletions(-)
>>   create mode 100644 lib/fdtdec_common.c
>>
[...]
>> diff --git a/lib/fdtdec_common.c b/lib/fdtdec_common.c
>> new file mode 100644
>> index 0000000..c03016c
>> --- /dev/null
>> +++ b/lib/fdtdec_common.c
>> @@ -0,0 +1,33 @@
>> +/*
>> + * Copyright (c) 2014
>> + * Heiko Schocher, DENX Software Engineering, hs at denx.de.
>> + *
>> + * Based on lib/fdtdec.c:
>> + * Copyright (c) 2011 The Chromium OS Authors.
>> + *
>> + * SPDX-License-Identifier:    GPL-2.0+
>> + */
>> +
>> +#ifndef USE_HOSTCC
>> +#include<common.h>
>> +#include<libfdt.h>
>> +#include<fdtdec.h>
>> +#else
>> +#include "libfdt.h"
>> +#include "fdt_support.h"
>> +#endif
>> +
>> +int fdtdec_get_int(const void *blob, int node, const char *prop_name,
>> +               int default_val)
>> +{
>> +       const int *cell;
>> +       int len;
>> +
>> +       cell = fdt_getprop_w((void *)blob, node, prop_name,&len);
>
> Is it possible to use fdt_getprop() here and avoid the cast?

Yes, of course, good Tip!

Add this in v3, thanks!

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

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

* [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable
  2014-05-15  5:47     ` Heiko Schocher
@ 2014-05-15  8:54       ` Michal Simek
  0 siblings, 0 replies; 10+ messages in thread
From: Michal Simek @ 2014-05-15  8:54 UTC (permalink / raw)
  To: u-boot

On 05/15/2014 07:47 AM, Heiko Schocher wrote:
> Hello Michal,
> 
> Am 14.05.2014 13:16, schrieb Michal Simek:
>> On 05/14/2014 12:54 PM, Heiko Schocher wrote:
>>> make the use of legacy image format configurable through
>>> the config define CONFIG_IMAGE_FORMAT_LEGACY.
>>>
>>> When relying on signed FIT images with required signature check
>>> the legacy image format should be disabled. Therefore introduce
>>> this new define and enable legacy image format if CONFIG_FIT_SIGNATURE
>>> is not set. If CONFIG_FIT_SIGNATURE is set disable per default
>>> the legacy image format.
>>>
>>> Signed-off-by: Heiko Schocher<hs@denx.de>
>>> Cc: Simon Glass<sjg@chromium.org>
>>> Cc: Lars Steubesand<lars.steubesand@philips.com>
>>> Cc: Mike Pearce<mike@kaew.be>
>>> Cc: Wolfgang Denk<wd@denx.de>
>>> Cc: Tom Rini<trini@ti.com>
>>> Cc: Michal Simek<monstr@monstr.eu>
>>> Cc: Michael Conrad<Michael.Conrad@ids.de>
>>>
>>> ---
>>> - changes for v2:
>>>    - make the legacy image format configurable through
>>>      the define CONFIG_IMAGE_FORMAT_LEGACY.
>>>
>>>      Default:
>>>      if not CONFIG_FIT_SIGNATURE is defined it is enabled,
>>>      else disabled.
>>>
>>>      Disable it with CONFIG_DISABLE_IMAGE_LEGACY if
>>>      CONFIG_FIT_SIGNATURE is not defined.
>>
>> Just a note that ifdef CONFIG_IMAGE_FORMAT_LEGACY
>> should be also used in SPL code.
> 
> I think thats the case, as I did the default settings in
> include/config_defaults.h and a MAKEALL for arm and powerpc
> dropped no compiler errors/warnings.
> 
> This is just a first step to deactivate legacy image format.
> A complete remove patch of it needs more work/time ...

SPL is using just legacy image format.

> 
>> But that means that FIT image with signature feature
>> should be enabled for SPL.
> 
> Why?

I described this differently than I wanted.
Enable FIT for SPL as one step
and enabling FIT with signature is optional.

>> If possible please also enable CONFIG_IMAGE_FORMAT_LEGACY
>> for zynq because we are using legacy formats too.
> 
> You mean in "include/configs/zynq-common.h" ?
> Prepared this for v3, but I could not test it...

Yes. I will test it that's not a problem.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 263 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140515/948eb879/attachment.pgp>

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

end of thread, other threads:[~2014-05-15  8:54 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-14 10:54 [U-Boot] [PATCH v2 0/4] mpc8313: ids8313 board updates Heiko Schocher
2014-05-14 10:54 ` [U-Boot] [PATCH v2 1/4] bootm: make use of legacy image format configurable Heiko Schocher
2014-05-14 11:16   ` Michal Simek
2014-05-15  5:47     ` Heiko Schocher
2014-05-15  8:54       ` Michal Simek
2014-05-14 10:54 ` [U-Boot] [PATCH v2 2/4] mpc8313, signed fit: enable legacy image format on ids8313 board Heiko Schocher
2014-05-14 10:54 ` [U-Boot] [PATCH v2 3/4] lib, fdt: move fdtdec_get_int() out of lib/fdtdec.c Heiko Schocher
2014-05-15  1:49   ` Simon Glass
2014-05-15  5:53     ` Heiko Schocher
2014-05-14 10:54 ` [U-Boot] [PATCH v2 4/4] mpc8313: add CONFIG_SYS_GENERIC_BOARD to ids8313 board Heiko Schocher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.