[U-Boot] [PATCH 1/2] Fix test failure caused by bad handling of ramdisk
Simon Glass
sjg at chromium.org
Fri Aug 22 22:26:43 CEST 2014
Commit e3a5bbce broke the FIT image tests by not loading a ramdisk even if
a load address is provided in the FIT. The rationale was that a load address
of 0 should be considered to mean 'do not load'.
Add a new load operation which supports this feature, so that the ramdisk
will be loaded if a non-zero load address is provided.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
common/image-fit.c | 2 +-
common/image.c | 3 ++-
include/image.h | 1 +
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/common/image-fit.c b/common/image-fit.c
index c61be65..255c4ca 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -1656,7 +1656,7 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
bootstage_error(bootstage_id + BOOTSTAGE_SUB_LOAD);
return -EBADF;
}
- } else {
+ } else if (load_op != FIT_LOAD_OPTIONAL_NON_ZERO || load) {
ulong image_start, image_end;
ulong load_end;
void *dst;
diff --git a/common/image.c b/common/image.c
index a2999c0..d0af597 100644
--- a/common/image.c
+++ b/common/image.c
@@ -951,7 +951,8 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
&fit_uname_config, arch,
IH_TYPE_RAMDISK,
BOOTSTAGE_ID_FIT_RD_START,
- FIT_LOAD_IGNORED, &rd_data, &rd_len);
+ FIT_LOAD_OPTIONAL_NON_ZERO,
+ &rd_data, &rd_len);
if (rd_noffset < 0)
return 1;
diff --git a/include/image.h b/include/image.h
index ca2fe86..f58e9ff 100644
--- a/include/image.h
+++ b/include/image.h
@@ -412,6 +412,7 @@ void genimg_print_time(time_t timestamp);
enum fit_load_op {
FIT_LOAD_IGNORED, /* Ignore load address */
FIT_LOAD_OPTIONAL, /* Can be provided, but optional */
+ FIT_LOAD_OPTIONAL_NON_ZERO, /* Optional, a value of 0 is ignored */
FIT_LOAD_REQUIRED, /* Must be provided */
};
--
2.1.0.rc2.206.gedb03e5
More information about the U-Boot
mailing list