Browse Source

MIPS: kdump: Set correct value to kexec_indirection_page variable

Since there is not indirection page in crash type, so the vaule of the head
field of kimage structure is not equal to the address of indirection page but
IND_DONE. so we have to set kexec_indirection_page variable to the address of
the head field of image structure.

[ralf@linux-mips.org: Don't add pointless empty line, fix trailing
whitespace damage.]

Signed-off-by: Yang Wei <Wei.Yang@windriver.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/7499/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Yang Wei 11 năm trước cách đây
mục cha
commit
91ffaa2783
1 tập tin đã thay đổi với 6 bổ sung2 xóa
  1. 6 2
      arch/mips/kernel/machine_kexec.c

+ 6 - 2
arch/mips/kernel/machine_kexec.c

@@ -71,8 +71,12 @@ machine_kexec(struct kimage *image)
 	kexec_start_address =
 	kexec_start_address =
 		(unsigned long) phys_to_virt(image->start);
 		(unsigned long) phys_to_virt(image->start);
 
 
-	kexec_indirection_page =
-		(unsigned long) phys_to_virt(image->head & PAGE_MASK);
+	if (image->type == KEXEC_TYPE_DEFAULT) {
+		kexec_indirection_page =
+			(unsigned long) phys_to_virt(image->head & PAGE_MASK);
+	} else {
+		kexec_indirection_page = (unsigned long)&image->head;
+	}
 
 
 	memcpy((void*)reboot_code_buffer, relocate_new_kernel,
 	memcpy((void*)reboot_code_buffer, relocate_new_kernel,
 	       relocate_new_kernel_size);
 	       relocate_new_kernel_size);