diff mbox series

KVM: PPC: Book3S HV: Make sure to load LPID for radix VCPUs

Message ID 20190513045818.GA10318@blackberry (mailing list archive)
State New, archived
Headers show
Series KVM: PPC: Book3S HV: Make sure to load LPID for radix VCPUs | expand

Commit Message

Paul Mackerras May 13, 2019, 4:58 a.m. UTC
Commit 70ea13f6e609 ("KVM: PPC: Book3S HV: Flush TLB on secondary radix
threads", 2019-04-29) aimed to make radix guests that are using the
real-mode entry path load the LPID register and flush the TLB in the
same place where those things are done for HPT guests.  However, it
omitted to remove a branch which branches around that code for radix
guests.  The result is that with indep_thread_mode = N, radix guests
don't run correctly.  (With indep_threads_mode = Y, which is the
default, radix guests use a different entry path.)

This removes the offending branch, and also the load and compare that
the branch depends on, since the cr7 setting is now unused.

Reported-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Fixes: 70ea13f6e609 ("KVM: PPC: Book3S HV: Flush TLB on secondary radix threads")
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
---
 arch/powerpc/kvm/book3s_hv_rmhandlers.S | 6 ------
 1 file changed, 6 deletions(-)

Comments

Suraj Jitindar Singh May 14, 2019, 1:11 a.m. UTC | #1
On Mon, 2019-05-13 at 14:58 +1000, Paul Mackerras wrote:
> Commit 70ea13f6e609 ("KVM: PPC: Book3S HV: Flush TLB on secondary
> radix
> threads", 2019-04-29) aimed to make radix guests that are using the
> real-mode entry path load the LPID register and flush the TLB in the
> same place where those things are done for HPT guests.  However, it
> omitted to remove a branch which branches around that code for radix
> guests.  The result is that with indep_thread_mode = N, radix guests
> don't run correctly.  (With indep_threads_mode = Y, which is the
> default, radix guests use a different entry path.)
> 
> This removes the offending branch, and also the load and compare that
> the branch depends on, since the cr7 setting is now unused.
> 
> Reported-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
> Fixes: 70ea13f6e609 ("KVM: PPC: Book3S HV: Flush TLB on secondary
> radix threads")
> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>

Tested-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>

> ---
>  arch/powerpc/kvm/book3s_hv_rmhandlers.S | 6 ------
>  1 file changed, 6 deletions(-)
> 
> diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
> b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
> index ad1fc01..ad7bee9 100644
> --- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
> +++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
> @@ -581,11 +581,8 @@ kvmppc_hv_entry:
>  1:
>  #endif
>  
> -	/* Use cr7 as an indication of radix mode */
>  	ld	r5, HSTATE_KVM_VCORE(r13)
>  	ld	r9, VCORE_KVM(r5)	/* pointer to struct kvm
> */
> -	lbz	r0, KVM_RADIX(r9)
> -	cmpwi	cr7, r0, 0
>  
>  	/*
>  	 * POWER7/POWER8 host -> guest partition switch code.
> @@ -608,9 +605,6 @@ kvmppc_hv_entry:
>  	cmpwi	r6,0
>  	bne	10f
>  
> -	/* Radix has already switched LPID and flushed core TLB */
> -	bne	cr7, 22f
> -
>  	lwz	r7,KVM_LPID(r9)
>  BEGIN_FTR_SECTION
>  	ld	r6,KVM_SDR1(r9)
diff mbox series

Patch

diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
index ad1fc01..ad7bee9 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -581,11 +581,8 @@  kvmppc_hv_entry:
 1:
 #endif
 
-	/* Use cr7 as an indication of radix mode */
 	ld	r5, HSTATE_KVM_VCORE(r13)
 	ld	r9, VCORE_KVM(r5)	/* pointer to struct kvm */
-	lbz	r0, KVM_RADIX(r9)
-	cmpwi	cr7, r0, 0
 
 	/*
 	 * POWER7/POWER8 host -> guest partition switch code.
@@ -608,9 +605,6 @@  kvmppc_hv_entry:
 	cmpwi	r6,0
 	bne	10f
 
-	/* Radix has already switched LPID and flushed core TLB */
-	bne	cr7, 22f
-
 	lwz	r7,KVM_LPID(r9)
 BEGIN_FTR_SECTION
 	ld	r6,KVM_SDR1(r9)