All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shreyas B Prabhu <shreyas@linux.vnet.ibm.com>
To: ego@linux.vnet.ibm.com
Cc: mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org,
	paulus@ozlabs.org, linux-kernel@vger.kernel.org,
	mikey@neuling.org
Subject: Re: [PATCH v2 2/9] powerpc/kvm: make hypervisor state restore a function
Date: Wed, 18 May 2016 12:37:56 +0530	[thread overview]
Message-ID: <573C14CC.20307@linux.vnet.ibm.com> (raw)
In-Reply-To: <20160518062542.GB3939@in.ibm.com>

Hi Gautham,

On 05/18/2016 11:55 AM, Gautham R Shenoy wrote:
> Hi Shreyas,
> 
> On Tue, May 03, 2016 at 01:54:31PM +0530, Shreyas B. Prabhu wrote:
>> In the current code, when the thread wakes up in reset vector, some
>> of the state restore code and check for whether a thread needs to
>> branch to kvm is duplicated. Reorder the code such that this
>> duplication is avoided.
>>
>> At a higher level this is what the change looks like-
> 
> I have manually verified that the code flow in the new patch is has
> the same effect as whatever we were doing earlier. There a couple of
> comments inline.
> 
Thanks for the review!

>> diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
>> index 7716ceb..7ebfbb0 100644
>> --- a/arch/powerpc/kernel/exceptions-64s.S
>> +++ b/arch/powerpc/kernel/exceptions-64s.S
>> @@ -107,25 +107,8 @@ BEGIN_FTR_SECTION
>>  	beq	9f
>>
>>  	cmpwi	cr3,r13,2
>> +	bl	power7_restore_hyp_resource
>>
>> -	/*
>> -	 * Check if last bit of HSPGR0 is set. This indicates whether we are
>> -	 * waking up from winkle.
>> -	 */
>> -	GET_PACA(r13)
>> -	clrldi	r5,r13,63
>> -	clrrdi	r13,r13,1
>> -	cmpwi	cr4,r5,1
>> -	mtspr	SPRN_HSPRG0,r13
>> -
>> -	lbz	r0,PACA_THREAD_IDLE_STATE(r13)
>> -	cmpwi   cr2,r0,PNV_THREAD_NAP
>> -	bgt     cr2,8f				/* Either sleep or Winkle */
>> -
>> -	/* Waking up from nap should not cause hypervisor state loss */
>> -	bgt	cr3,.
>> -
>> -	/* Waking up from nap */
>>  	li	r0,PNV_THREAD_RUNNING
>>  	stb	r0,PACA_THREAD_IDLE_STATE(r13)	/* Clear thread state */
>>
>> @@ -143,13 +126,9 @@ BEGIN_FTR_SECTION
>>
>>  	/* Return SRR1 from power7_nap() */
>>  	mfspr	r3,SPRN_SRR1
>> -	beq	cr3,2f
>> -	b	power7_wakeup_noloss
>> -2:	b	power7_wakeup_loss
>> -
>> -	/* Fast Sleep wakeup on PowerNV */
>> -8:	GET_PACA(r13)
> 
> In the old code, we do a GET_PACA(r13) before invoking the
> power7_wakeup_tb_loss. In the new code we don't. Can you explain
> this omission ?

GET_PACA(13) is the called in the beginning of
power7_restore_hyp_resource. So r13 contains pointer to PACA when
power7_wakeup_tb_loss invoked later in the same function.
> 
> 
> [..snip..]
> 
>> @@ -420,33 +451,9 @@ common_exit:
>>
>>  hypervisor_state_restored:
>>
>> -	li	r5,PNV_THREAD_RUNNING
>> -	stb     r5,PACA_THREAD_IDLE_STATE(r13)
>> -
>>  	mtspr	SPRN_SRR1,r16
>> -#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     6f
>> -	b       kvm_start_guest
>> -6:
>> -#endif
>> -
>> -	REST_NVGPRS(r1)
>> -	REST_GPR(2, r1)
>> -	ld	r3,_CCR(r1)
>> -	ld	r4,_MSR(r1)
>> -	ld	r5,_NIP(r1)
>> -	addi	r1,r1,INT_FRAME_SIZE
>> -	mtcr	r3
>> -	mfspr	r3,SPRN_SRR1		/* Return SRR1 */
>> -	mtspr	SPRN_SRR1,r4
>> -	mtspr	SPRN_SRR0,r5
>> -	rfid
>> +	mtlr	r17
>> +	blr
> 
> 
> Perhaps you could add a comment against this blr to indicate that we
> go back to the reset vector right after the call to
> power7_restore_hyp_resource. 

Ok. I'll do that.
> 
>>
>>  fastsleep_workaround_at_exit:
>>  	li	r3,1
>> -- 
>> 2.4.11
>>

  reply	other threads:[~2016-05-18  7:08 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-03  8:24 [PATCH v2 0/9] powerpc/powernv/cpuidle: Add support for POWER ISA v3 idle states Shreyas B. Prabhu
2016-05-03  8:24 ` [PATCH v2 1/9] powerpc/powernv: Move CHECK_HMI_INTERRUPT to exception-64s header Shreyas B. Prabhu
2016-05-18  4:35   ` Gautham R Shenoy
2016-05-18  7:21     ` Shreyas B Prabhu
2016-05-03  8:24 ` [PATCH v2 2/9] powerpc/kvm: make hypervisor state restore a function Shreyas B. Prabhu
2016-05-18  6:25   ` Gautham R Shenoy
2016-05-18  7:07     ` Shreyas B Prabhu [this message]
2016-05-19 14:24       ` Gautham R Shenoy
2016-05-20  1:45   ` Paul Mackerras
2016-05-03  8:24 ` [PATCH v2 3/9] powerpc/powernv: Move idle code usable by multiple hardware to common location Shreyas B. Prabhu
2016-05-18  6:29   ` Gautham R Shenoy
2016-05-03  8:24 ` [PATCH v2 4/9] powerpc/powernv: Make power7_powersave_common more generic Shreyas B. Prabhu
2016-05-18  6:37   ` Gautham R Shenoy
2016-05-18  6:51     ` Shreyas B Prabhu
2016-05-19 14:26       ` Gautham R Shenoy
2016-05-03  8:24 ` [PATCH v2 5/9] powerpc/powernv: Move idle related macros to cpuidle.h Shreyas B. Prabhu
2016-05-19 14:27   ` Gautham R Shenoy
2016-05-03  8:24 ` [PATCH v2 6/9] powerpc/powernv: set power_save func after the idle states are initialized Shreyas B. Prabhu
2016-05-18  6:45   ` Gautham R Shenoy
2016-05-03  8:24 ` [PATCH v2 7/9] powerpc/powernv: Add platform support for stop instruction Shreyas B. Prabhu
2016-05-18 17:57   ` Gautham R Shenoy
2016-05-20  5:25   ` Paul Mackerras
2016-05-20  6:16     ` Shreyas B Prabhu
2016-05-20  6:16     ` Shreyas B Prabhu
2016-05-03  8:24 ` [PATCH v2 8/9] cpuidle/powernv: Add support for POWER ISA v3 idle states Shreyas B. Prabhu
2016-05-03  8:24 ` [PATCH v2 9/9] powerpc/powernv: Use deepest stop state when cpu is offlined Shreyas B. Prabhu
2016-05-18 18:07   ` Gautham R Shenoy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=573C14CC.20307@linux.vnet.ibm.com \
    --to=shreyas@linux.vnet.ibm.com \
    --cc=ego@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mikey@neuling.org \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.