s390/kexec: turn DAT mode off immediately before purgatory
The kernel code is not guaranteed DAT-off mode safe. Turn the DAT mode off immediately before entering the purgatory. Further, to avoid subtle side effects reset the system immediately before turning DAT mode off while making all necessary preparations in advance. Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
1a33aee1dc
commit
7a04d491ed
|
@ -254,14 +254,13 @@ static void __do_machine_kexec(void *data)
|
|||
relocate_kernel_t data_mover;
|
||||
struct kimage *image = data;
|
||||
|
||||
s390_reset_system();
|
||||
data_mover = (relocate_kernel_t) page_to_phys(image->control_code_page);
|
||||
|
||||
__arch_local_irq_stnsm(0xfb); /* disable DAT - avoid no-execute */
|
||||
/* Call the moving routine */
|
||||
diag308_subcode = DIAG308_CLEAR_RESET;
|
||||
if (sclp.has_iplcc)
|
||||
diag308_subcode |= DIAG308_FLAG_EI;
|
||||
s390_reset_system();
|
||||
|
||||
__arch_local_irq_stnsm(0xfb); /* disable DAT - avoid no-execute */
|
||||
(*data_mover)(&image->head, image->start, diag308_subcode);
|
||||
|
||||
/* Die if kexec returns */
|
||||
|
|
Loading…
Reference in New Issue