diff options
Diffstat (limited to 'arch/s390/kernel/entry.S')
| -rw-r--r-- | arch/s390/kernel/entry.S | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 21900e1cee9c..7c6904d616d8 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  /*   *    S390 low-level entry points.   * @@ -521,12 +522,15 @@ ENTRY(pgm_check_handler)  	tmhh	%r8,0x0001		# test problem state bit  	jnz	2f			# -> fault in user space  #if IS_ENABLED(CONFIG_KVM) -	# cleanup critical section for sie64a +	# cleanup critical section for program checks in sie64a  	lgr	%r14,%r9  	slg	%r14,BASED(.Lsie_critical_start)  	clg	%r14,BASED(.Lsie_critical_length)  	jhe	0f -	brasl	%r14,.Lcleanup_sie +	lg	%r14,__SF_EMPTY(%r15)		# get control block pointer +	ni	__SIE_PROG0C+3(%r14),0xfe	# no longer in SIE +	lctlg	%c1,%c1,__LC_USER_ASCE		# load primary asce +	larl	%r9,sie_exit			# skip forward to sie_exit  #endif  0:	tmhh	%r8,0x4000		# PER bit set in old PSW ?  	jnz	1f			# -> enabled, can't be a double fault |