POWER9 does not use this field, so it should be moved into the POWER8
code. Update the documentation in the paca struct too.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/include/asm/paca.h   | 12 ++++++++++--
 arch/powerpc/kernel/idle_book3s.S | 13 +++++++------
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/include/asm/paca.h b/arch/powerpc/include/asm/paca.h
index 708c3e592eeb..bbb59e226a9f 100644
--- a/arch/powerpc/include/asm/paca.h
+++ b/arch/powerpc/include/asm/paca.h
@@ -165,11 +165,19 @@ struct paca_struct {
 #endif
 
 #ifdef CONFIG_PPC_POWERNV
-       /* Per-core mask tracking idle threads and a lock bit-[L][TTTTTTTT] */
+       /* CPU idle fields */
+
+       /*
+        * Per-core word used to synchronize between threads. See
+        * asm/cpuidle.h, PNV_CORE_IDLE_*
+        */
        u32 *core_idle_state_ptr;
-       u8 thread_idle_state;           /* PNV_THREAD_RUNNING/NAP/SLEEP */
        /* Mask to indicate thread id in core */
        u8 thread_mask;
+
+       /* POWER8 specific fields */
+       /* PNV_THREAD_RUNNING/NAP/SLEEP */
+       u8 thread_idle_state;
        /* Mask to denote subcore sibling threads */
        u8 subcore_sibling_mask;
 #endif
diff --git a/arch/powerpc/kernel/idle_book3s.S 
b/arch/powerpc/kernel/idle_book3s.S
index 9284ea0762b1..9bdfba75a5e7 100644
--- a/arch/powerpc/kernel/idle_book3s.S
+++ b/arch/powerpc/kernel/idle_book3s.S
@@ -389,9 +389,6 @@ FTR_SECTION_ELSE
        bl      pnv_restore_hyp_resource_arch207
 ALT_FTR_SECTION_END_IFSET(CPU_FTR_ARCH_300)
 
-       li      r0,PNV_THREAD_RUNNING
-       stb     r0,PACA_THREAD_IDLE_STATE(r13)  /* Clear thread state */
-
 #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
        li      r0,KVM_HWTHREAD_IN_KERNEL
        stb     r0,HSTATE_HWTHREAD_STATE(r13)
@@ -445,9 +442,13 @@ pnv_restore_hyp_resource_arch207:
        ld      r2,PACATOC(r13);
 
        lbz     r0,PACA_THREAD_IDLE_STATE(r13)
-       cmpwi   cr2,r0,PNV_THREAD_NAP
-       cmpwi   cr4,r0,PNV_THREAD_WINKLE
-       bgt     cr2,pnv_wakeup_tb_loss  /* Either sleep or Winkle */
+       cmpwi   cr2,r0,PNV_THREAD_NAP
+       cmpwi   cr4,r0,PNV_THREAD_WINKLE
+       li      r0,PNV_THREAD_RUNNING
+       stb     r0,PACA_THREAD_IDLE_STATE(r13)  /* Clear thread state */
+
+       bgt     cr2,pnv_wakeup_tb_loss  /* Either sleep or Winkle */
+
 
        /*
         * We fall through here if PACA_THREAD_IDLE_STATE shows we are waking
-- 
2.11.0

Reply via email to