|
@@ -225,7 +225,17 @@ static void boot_prep_linux(bootm_headers_t *images)
|
|
|
if (BOOTM_ENABLE_MEMORY_TAGS)
|
|
|
setup_memory_tags(gd->bd);
|
|
|
if (BOOTM_ENABLE_INITRD_TAG) {
|
|
|
- if (images->rd_start && images->rd_end) {
|
|
|
+ /*
|
|
|
+ * In boot_ramdisk_high(), it may relocate ramdisk to
|
|
|
+ * a specified location. And set images->initrd_start &
|
|
|
+ * images->initrd_end to relocated ramdisk's start/end
|
|
|
+ * addresses. So use them instead of images->rd_start &
|
|
|
+ * images->rd_end when possible.
|
|
|
+ */
|
|
|
+ if (images->initrd_start && images->initrd_end) {
|
|
|
+ setup_initrd_tag(gd->bd, images->initrd_start,
|
|
|
+ images->initrd_end);
|
|
|
+ } else if (images->rd_start && images->rd_end) {
|
|
|
setup_initrd_tag(gd->bd, images->rd_start,
|
|
|
images->rd_end);
|
|
|
}
|