|
@@ -29,6 +29,7 @@ extern unsigned long kexec_boot_atags;
|
|
|
|
|
|
static atomic_t waiting_for_crash_ipi;
|
|
|
|
|
|
+static unsigned long dt_mem;
|
|
|
/*
|
|
|
* Provide a dummy crash_notes definition while crash dump arrives to arm.
|
|
|
* This prevents breakage of crash_notes attribute in kernel/ksysfs.c.
|
|
@@ -64,7 +65,7 @@ int machine_kexec_prepare(struct kimage *image)
|
|
|
return err;
|
|
|
|
|
|
if (be32_to_cpu(header) == OF_DT_HEADER)
|
|
|
- kexec_boot_atags = current_segment->mem;
|
|
|
+ dt_mem = current_segment->mem;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
@@ -166,9 +167,8 @@ void machine_kexec(struct kimage *image)
|
|
|
kexec_start_address = image->start;
|
|
|
kexec_indirection_page = page_list;
|
|
|
kexec_mach_type = machine_arch_type;
|
|
|
- if (!kexec_boot_atags)
|
|
|
- kexec_boot_atags = image->start - KEXEC_ARM_ZIMAGE_OFFSET + KEXEC_ARM_ATAGS_OFFSET;
|
|
|
-
|
|
|
+ kexec_boot_atags = dt_mem ?: image->start - KEXEC_ARM_ZIMAGE_OFFSET
|
|
|
+ + KEXEC_ARM_ATAGS_OFFSET;
|
|
|
|
|
|
/* copy our kernel relocation code to the control code page */
|
|
|
reboot_entry = fncpy(reboot_code_buffer,
|