KVM: PPC: Book3S HV: Make sure to load LPID for radix VCPUs
authorPaul Mackerras <paulus@ozlabs.org>
Mon, 13 May 2019 03:03:49 +0000 (13:03 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Tue, 14 May 2019 02:05:24 +0000 (12:05 +1000)
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>
Tested-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

index ad1fc01944762d5ee6396b72ac1a4ce166277bc5..ad7bee97de775406c1053f02abe6cd67c5463215 100644 (file)
@@ -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)