powerpc/64s/exception: avoid SPR RAW scoreboard stall in real mode entry
authorNicholas Piggin <npiggin@gmail.com>
Fri, 28 Jun 2019 05:33:21 +0000 (15:33 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 2 Jul 2019 11:39:48 +0000 (21:39 +1000)
Move SPR reads ahead of writes. Real mode entry that is not a KVM
guest is rare these days, but bad practice propagates.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/exceptions-64s.S

index 564a770397015157cc26d5c737e3934b961e864a..3735b9d1bb6586848ecd3b0f548fda840945d0d2 100644 (file)
@@ -183,19 +183,19 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
        .endif
        .if \hsrr
        mfspr   r11,SPRN_HSRR0          /* save HSRR0 */
+       mfspr   r12,SPRN_HSRR1          /* and HSRR1 */
+       mtspr   SPRN_HSRR1,r10
        .else
        mfspr   r11,SPRN_SRR0           /* save SRR0 */
+       mfspr   r12,SPRN_SRR1           /* and SRR1 */
+       mtspr   SPRN_SRR1,r10
        .endif
-       LOAD_HANDLER(r12, \label\())
+       LOAD_HANDLER(r10, \label\())
        .if \hsrr
-       mtspr   SPRN_HSRR0,r12
-       mfspr   r12,SPRN_HSRR1          /* and HSRR1 */
-       mtspr   SPRN_HSRR1,r10
+       mtspr   SPRN_HSRR0,r10
        HRFI_TO_KERNEL
        .else
-       mtspr   SPRN_SRR0,r12
-       mfspr   r12,SPRN_SRR1           /* and SRR1 */
-       mtspr   SPRN_SRR1,r10
+       mtspr   SPRN_SRR0,r10
        RFI_TO_KERNEL
        .endif
        b       .       /* prevent speculative execution */