Inter-revision diff: patch 4

Comparing v2 (message) to v3 (message)

--- v2
+++ v3
@@ -2,51 +2,27 @@
 state and eventually changes MSR to MSR_IDLE and does rfid to
 power7_enter_nap_mode.
 
-Make it more generic by passing the rfid address as a function parameter.
+Move the updation of HSTATE_HWTHREAD_STATE to power7_powersave_common
+from power7_enter_nap_mode and make it more generic by passing the rfid
+address as a function parameter.
+
 Also make function name more generic.
 
+Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
 Signed-off-by: Shreyas B. Prabhu <shreyas@linux.vnet.ibm.com>
 ---
- arch/powerpc/kernel/idle_power7.S       | 11 +++++++----
- arch/powerpc/kernel/idle_power_common.S | 11 ++++++-----
- 2 files changed, 13 insertions(+), 9 deletions(-)
+Changes in v3:
+==============
+ - Moved HSTATE_HWTHREAD_STATE updation to power_powersave_common
 
-diff --git a/arch/powerpc/kernel/idle_power7.S b/arch/powerpc/kernel/idle_power7.S
-index 594e1c5..1ea71d4 100644
---- a/arch/powerpc/kernel/idle_power7.S
-+++ b/arch/powerpc/kernel/idle_power7.S
-@@ -169,19 +169,22 @@ _GLOBAL(power7_idle)
- _GLOBAL(power7_nap)
- 	mr	r4,r3
- 	li	r3,PNV_THREAD_NAP
--	b	power7_powersave_common
-+	LOAD_REG_ADDR(r5, power7_enter_nap_mode)
-+	b	power_powersave_common
- 	/* No return */
- 
- _GLOBAL(power7_sleep)
- 	li	r3,PNV_THREAD_SLEEP
- 	li	r4,1
--	b	power7_powersave_common
-+	LOAD_REG_ADDR(r5, power7_enter_nap_mode)
-+	b	power_powersave_common
- 	/* No return */
- 
- _GLOBAL(power7_winkle)
--	li	r3,3
-+	li	r3,PNV_THREAD_WINKLE
- 	li	r4,1
--	b	power7_powersave_common
-+	LOAD_REG_ADDR(r5, power7_enter_nap_mode)
-+	b	power_powersave_common
- 	/* No return */
- 
- _GLOBAL(power7_wakeup_tb_loss)
+ arch/powerpc/kernel/idle_power_common.S | 30 +++++++++++++++++-------------
+ 1 file changed, 17 insertions(+), 13 deletions(-)
+
 diff --git a/arch/powerpc/kernel/idle_power_common.S b/arch/powerpc/kernel/idle_power_common.S
-index 05954ae..ff7a541 100644
+index 973c9a1..d100577 100644
 --- a/arch/powerpc/kernel/idle_power_common.S
 +++ b/arch/powerpc/kernel/idle_power_common.S
-@@ -21,8 +21,10 @@
+@@ -74,8 +74,10 @@ core_idle_lock_held:
   * To check IRQ_HAPPENED in r4
   * 	0 - don't check
   * 	1 - check
@@ -54,11 +30,22 @@
 + * Address to 'rfid' to in r5
   */
 -_GLOBAL(power7_powersave_common)
-+_GLOBAL(power_powersave_common)
++_GLOBAL(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
-@@ -79,13 +81,12 @@ _GLOBAL(power7_powersave_common)
+@@ -126,28 +128,27 @@ _GLOBAL(power7_powersave_common)
+ 	std	r9,_MSR(r1)
+ 	std	r1,PACAR1(r13)
+ 
++#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
++	/* Tell KVM we're napping */
++	li	r4,KVM_HWTHREAD_IN_NAP
++	stb	r4,HSTATE_HWTHREAD_STATE(r13)
++#endif
+ 	/*
+ 	 * Go to real mode to do the nap, as required by the architecture.
+ 	 * Also, we need to be in real mode before setting hwthread_state,
  	 * because as soon as we do that, another thread can switch
  	 * the MMU context to the guest.
  	 */
@@ -73,7 +60,42 @@
 +	mtspr	SPRN_SRR0, r5
 +	mtspr	SPRN_SRR1, r7
  	rfid
+ 
+ 	.globl	power7_enter_nap_mode
+ power7_enter_nap_mode:
+-#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
+-	/* Tell KVM we're napping */
+-	li	r4,KVM_HWTHREAD_IN_NAP
+-	stb	r4,HSTATE_HWTHREAD_STATE(r13)
+-#endif
+ 	stb	r3,PACA_THREAD_IDLE_STATE(r13)
+ 	cmpwi	cr3,r3,PNV_THREAD_SLEEP
+ 	bge	cr3,2f
+@@ -242,19 +243,22 @@ _GLOBAL(power7_idle)
+ _GLOBAL(power7_nap)
+ 	mr	r4,r3
+ 	li	r3,PNV_THREAD_NAP
+-	b	power7_powersave_common
++	LOAD_REG_ADDR(r5, power7_enter_nap_mode)
++	b	pnv_powersave_common
  	/* No return */
  
+ _GLOBAL(power7_sleep)
+ 	li	r3,PNV_THREAD_SLEEP
+ 	li	r4,1
+-	b	power7_powersave_common
++	LOAD_REG_ADDR(r5, power7_enter_nap_mode)
++	b	pnv_powersave_common
+ 	/* No return */
+ 
+ _GLOBAL(power7_winkle)
+ 	li	r3,3
+ 	li	r4,1
+-	b	power7_powersave_common
++	LOAD_REG_ADDR(r5, power7_enter_nap_mode)
++	b	pnv_powersave_common
+ 	/* No return */
+ 
+ #define CHECK_HMI_INTERRUPT						\
 -- 
 2.4.11
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help