diff options
Diffstat (limited to 'arch/s390/kernel/ipl.c')
| -rw-r--r-- | arch/s390/kernel/ipl.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index 8342e65a140..2f6cfd460cb 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c @@ -1528,12 +1528,15 @@ static struct shutdown_action __refdata dump_action = {  static void dump_reipl_run(struct shutdown_trigger *trigger)  { -	u32 csum; +	struct { +		void	*addr; +		__u32	csum; +	} __packed ipib; -	csum = csum_partial(reipl_block_actual, reipl_block_actual->hdr.len, 0); -	copy_to_absolute_zero(&S390_lowcore.ipib_checksum, &csum, sizeof(csum)); -	copy_to_absolute_zero(&S390_lowcore.ipib, &reipl_block_actual, -			      sizeof(reipl_block_actual)); +	ipib.csum = csum_partial(reipl_block_actual, +				 reipl_block_actual->hdr.len, 0); +	ipib.addr = reipl_block_actual; +	memcpy_absolute(&S390_lowcore.ipib, &ipib, sizeof(ipib));  	dump_run(trigger);  } @@ -1750,6 +1753,7 @@ static struct kobj_attribute on_restart_attr =  static void __do_restart(void *ignore)  { +	__arch_local_irq_stosm(0x04); /* enable DAT */  	smp_send_stop();  #ifdef CONFIG_CRASH_DUMP  	crash_kexec(NULL);  |