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 |
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 --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)
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(-)