diff options
Diffstat (limited to 'arch/powerpc/kernel/exceptions-64s.S')
| -rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 18 | 
1 files changed, 8 insertions, 10 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index cb705fdbb45..1c06d297154 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S @@ -63,11 +63,13 @@ BEGIN_FTR_SECTION  	GET_PACA(r13)  #ifdef CONFIG_KVM_BOOK3S_64_HV -	lbz	r0,PACAPROCSTART(r13) -	cmpwi	r0,0x80 -	bne	1f -	li	r0,1 -	stb	r0,PACAPROCSTART(r13) +	li	r0,KVM_HWTHREAD_IN_KERNEL +	stb	r0,HSTATE_HWTHREAD_STATE(r13) +	/* Order setting hwthread_state vs. testing hwthread_req */ +	sync +	lbz	r0,HSTATE_HWTHREAD_REQ(r13) +	cmpwi	r0,0 +	beq	1f  	b	kvm_start_guest  1:  #endif @@ -94,12 +96,10 @@ machine_check_pSeries_1:  data_access_pSeries:  	HMT_MEDIUM  	SET_SCRATCH0(r13) -#ifndef CONFIG_POWER4_ONLY  BEGIN_FTR_SECTION  	b	data_access_check_stab  data_access_not_stab:  END_MMU_FTR_SECTION_IFCLR(MMU_FTR_SLB) -#endif  	EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, data_access_common, EXC_STD,  				 KVMTEST, 0x300) @@ -301,7 +301,6 @@ machine_check_fwnmi:  				 EXC_STD, KVMTEST, 0x200)  	KVM_HANDLER_SKIP(PACA_EXMC, EXC_STD, 0x200) -#ifndef CONFIG_POWER4_ONLY  	/* moved from 0x300 */  data_access_check_stab:  	GET_PACA(r13) @@ -328,7 +327,6 @@ do_stab_bolted_pSeries:  	GET_SCRATCH0(r10)  	std	r10,PACA_EXSLB+EX_R13(r13)  	EXCEPTION_PROLOG_PSERIES_1(.do_stab_bolted, EXC_STD) -#endif /* CONFIG_POWER4_ONLY */  	KVM_HANDLER_SKIP(PACA_EXGEN, EXC_STD, 0x300)  	KVM_HANDLER_SKIP(PACA_EXSLB, EXC_STD, 0x380) @@ -768,8 +766,8 @@ alignment_common:  	std	r3,_DAR(r1)  	std	r4,_DSISR(r1)  	bl	.save_nvgprs +	DISABLE_INTS  	addi	r3,r1,STACK_FRAME_OVERHEAD -	ENABLE_INTS  	bl	.alignment_exception  	b	.ret_from_except  |