|
@@ -71,8 +71,12 @@ machine_kexec(struct kimage *image)
|
|
|
kexec_start_address =
|
|
|
(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,
|
|
|
relocate_new_kernel_size);
|