diff options
author | Simon Glass <sjg@chromium.org> | 2014-08-22 14:26:43 -0600 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2014-08-28 17:18:48 -0400 |
commit | fe20a81a6802bb871f4c3c46534310519c7d86d3 (patch) | |
tree | b56afb4cd56111af9dbdbf8c6bdb2029420fbeac | |
parent | 4a8ed8e24886adf47086125f81307eaa8c358437 (diff) | |
download | u-boot-imx-fe20a81a6802bb871f4c3c46534310519c7d86d3.zip u-boot-imx-fe20a81a6802bb871f4c3c46534310519c7d86d3.tar.gz u-boot-imx-fe20a81a6802bb871f4c3c46534310519c7d86d3.tar.bz2 |
Fix test failure caused by bad handling of ramdisk
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@chromium.org>
-rw-r--r-- | common/image-fit.c | 2 | ||||
-rw-r--r-- | common/image.c | 3 | ||||
-rw-r--r-- | 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 d4ccff0..38b56e3 100644 --- a/common/image.c +++ b/common/image.c @@ -966,7 +966,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 69f86ad..3401056 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 */ }; |