Hi Nick, This patch is fine by me.
Reviewed-by: Gautham R. Shenoy <e...@linux.vnet.ibm.com> On Fri, Feb 17, 2017 at 12:08 AM, Nicholas Piggin <npig...@gmail.com> wrote: > Should be no functional change. > > Signed-off-by: Nicholas Piggin <npig...@gmail.com> > --- > arch/powerpc/kernel/exceptions-64s.S | 26 +----------------------- > arch/powerpc/kernel/idle_book3s.S | 39 > +++++++++++++++++++++++++++++++----- > 2 files changed, 35 insertions(+), 30 deletions(-) > > diff --git a/arch/powerpc/kernel/exceptions-64s.S > b/arch/powerpc/kernel/exceptions-64s.S > index 0e1350b30160..d0d89047befe 100644 > --- a/arch/powerpc/kernel/exceptions-64s.S > +++ b/arch/powerpc/kernel/exceptions-64s.S > @@ -130,31 +130,7 @@ EXC_VIRT_NONE(0x4100, 0x4200) > > #ifdef CONFIG_PPC_P7_NAP > EXC_COMMON_BEGIN(system_reset_idle_common) > -BEGIN_FTR_SECTION > - GET_PACA(r13) /* Restore HSPRG0 to get the winkle bit in r13 */ > -END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300) > - bl pnv_restore_hyp_resource > - > - 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) > - /* Order setting hwthread_state vs. testing hwthread_req */ > - sync > - lbz r0,HSTATE_HWTHREAD_REQ(r13) > - cmpwi r0,0 > - beq 1f > - b kvm_start_guest > -1: > -#endif > - > - /* Return SRR1 from power7_nap() */ > - mfspr r3,SPRN_SRR1 > - blt cr3,2f > - b pnv_wakeup_loss > -2: b pnv_wakeup_noloss > + b pnv_powersave_wakeup > #endif > > EXC_COMMON_BEGIN(system_reset_common) > diff --git a/arch/powerpc/kernel/idle_book3s.S > b/arch/powerpc/kernel/idle_book3s.S > index 72dac0b58061..ea3562f83c57 100644 > --- a/arch/powerpc/kernel/idle_book3s.S > +++ b/arch/powerpc/kernel/idle_book3s.S > @@ -115,7 +115,7 @@ core_idle_lock_held: > * > * Address to 'rfid' to in r5 > */ > -_GLOBAL(pnv_powersave_common) > +pnv_powersave_common: > /* Use r3 to pass state nap/sleep/winkle */ > /* NAP is a state loss, we create a regs frame on the > * stack, fill it up with the state we care about and > @@ -365,6 +365,34 @@ _GLOBAL(power9_idle_stop) > LOAD_REG_ADDR(r5,power_enter_stop) > b pnv_powersave_common > /* No return */ > + > +.global pnv_powersave_wakeup > +pnv_powersave_wakeup: > +BEGIN_FTR_SECTION > + GET_PACA(r13) /* Restore HSPRG0 to get the winkle bit in r13 */ > +END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300) > + bl pnv_restore_hyp_resource > + > + 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) > + /* Order setting hwthread_state vs. testing hwthread_req */ > + sync > + lbz r0,HSTATE_HWTHREAD_REQ(r13) > + cmpwi r0,0 > + beq 1f > + b kvm_start_guest > +1: > +#endif > + > + /* Return SRR1 from power7_nap() */ > + mfspr r3,SPRN_SRR1 > + blt cr3,pnv_wakeup_noloss > + b pnv_wakeup_loss > + > /* > * Called from reset vector. Check whether we have woken up with > * hypervisor state loss. If yes, restore hypervisor state and return > @@ -373,7 +401,7 @@ _GLOBAL(power9_idle_stop) > * r13 - Contents of HSPRG0 > * cr3 - set to gt if waking up with partial/complete hypervisor state loss > */ > -_GLOBAL(pnv_restore_hyp_resource) > +pnv_restore_hyp_resource: > BEGIN_FTR_SECTION > ld r2,PACATOC(r13); > /* > @@ -436,7 +464,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300) > * cr3 - gt if waking up with partial/complete hypervisor state loss > * cr4 - gt or eq if waking up from complete hypervisor state loss. > */ > -_GLOBAL(pnv_wakeup_tb_loss) > +pnv_wakeup_tb_loss: > ld r1,PACAR1(r13) > /* > * Before entering any idle state, the NVGPRs are saved in the stack > @@ -640,7 +668,8 @@ fastsleep_workaround_at_exit: > * R3 here contains the value that will be returned to the caller > * of power7_nap. > */ > -_GLOBAL(pnv_wakeup_loss) > +.global pnv_wakeup_loss > +pnv_wakeup_loss: > ld r1,PACAR1(r13) > BEGIN_FTR_SECTION > CHECK_HMI_INTERRUPT > @@ -660,7 +689,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) > * R3 here contains the value that will be returned to the caller > * of power7_nap. > */ > -_GLOBAL(pnv_wakeup_noloss) > +pnv_wakeup_noloss: > lbz r0,PACA_NAPSTATELOST(r13) > cmpwi r0,0 > bne pnv_wakeup_loss > -- > 2.11.0 > -- Thanks and Regards gautham.