diff options
Diffstat (limited to 'arch/arm/kernel/machine_kexec.c')
| -rw-r--r-- | arch/arm/kernel/machine_kexec.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c index 15495887ca14..fe1419eeb932 100644 --- a/arch/arm/kernel/machine_kexec.c +++ b/arch/arm/kernel/machine_kexec.c @@ -30,7 +30,6 @@ 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. @@ -42,6 +41,9 @@ int machine_kexec_prepare(struct kimage *image)  	__be32 header;  	int i, err; +	image->arch.kernel_r2 = image->start - KEXEC_ARM_ZIMAGE_OFFSET +				     + KEXEC_ARM_ATAGS_OFFSET; +  	/*  	 * Validate that if the current HW supports SMP, then the SW supports  	 * and implements CPU hotplug for the current HW. If not, we won't be @@ -66,8 +68,8 @@ int machine_kexec_prepare(struct kimage *image)  		if (err)  			return err; -		if (be32_to_cpu(header) == OF_DT_HEADER) -			dt_mem = current_segment->mem; +		if (header == cpu_to_be32(OF_DT_HEADER)) +			image->arch.kernel_r2 = current_segment->mem;  	}  	return 0;  } @@ -165,8 +167,7 @@ void machine_kexec(struct kimage *image)  	kexec_start_address = image->start;  	kexec_indirection_page = page_list;  	kexec_mach_type = machine_arch_type; -	kexec_boot_atags = dt_mem ?: image->start - KEXEC_ARM_ZIMAGE_OFFSET -				     + KEXEC_ARM_ATAGS_OFFSET; +	kexec_boot_atags = image->arch.kernel_r2;  	/* copy our kernel relocation code to the control code page */  	reboot_entry = fncpy(reboot_code_buffer,  | 
