powerpc/64s: POWER9 can execute stop without a sync sequence
authorNicholas Piggin <npiggin@gmail.com>
Tue, 29 Aug 2017 11:34:40 +0000 (21:34 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 29 Aug 2017 11:39:07 +0000 (21:39 +1000)
We don't need to use IDLE_STATE_ENTER_SEQ_NORET on Power9.

Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Split out of larger patch]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/idle_book3s.S

index c3cc185..22e616e 100644 (file)
@@ -333,7 +333,7 @@ power_enter_stop:
        andis.   r4,r3,PSSCR_EC_ESL_MASK_SHIFTED
        clrldi   r3,r3,60 /* r3 = Bits[60:63] = Requested Level (RL) */
        bne      .Lhandle_esl_ec_set
-       IDLE_STATE_ENTER_SEQ(PPC_STOP)
+       PPC_STOP
        li      r3,0  /* Since we didn't lose state, return 0 */
 
        /*
@@ -366,7 +366,8 @@ power_enter_stop:
        ld      r4,ADDROFF(pnv_first_deep_stop_state)(r5)
        cmpd    r3,r4
        bge     .Lhandle_deep_stop
-       IDLE_STATE_ENTER_SEQ_NORET(PPC_STOP)
+       PPC_STOP        /* Does not return (system reset interrupt) */
+
 .Lhandle_deep_stop:
 /*
  * Entering deep idle state.
@@ -388,7 +389,7 @@ lwarx_loop_stop:
 
        bl      save_sprs_to_stack
 
-       IDLE_STATE_ENTER_SEQ_NORET(PPC_STOP)
+       PPC_STOP        /* Does not return (system reset interrupt) */
 
 /*
  * Entered with MSR[EE]=0 and no soft-masked interrupts pending.