Skip to contentSkip to conversation

Update wait_state_cycles in the VPA.

PATCH New Tony Breeds 1 participant 1 message Mar 17, 2008 PowerPC

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Update wait_state_cycles in the VPA.

The hypervisor can look at the value in wait_state_cycles for an estimate of how busy dedicated processors are. Currently as the kernel never touches this field so we appear to be 100% busy. Record the duration the kernel is in powersave and pass that to the HV to provide a reasonable indication of utilisation.

---
 arch/powerpc/platforms/pseries/setup.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
arch/powerpc/platforms/pseries/setup.c +4 -0
index fdb9b1c..90555a3 100644
@@ -393,6 +393,7 @@ static void pseries_dedicated_idle_sleep(void)
 { 
 	unsigned int cpu = smp_processor_id();
 	unsigned long start_snooze;
+	unsigned long in_purr, out_purr;
 
 	/*
 	 * Indicate to the HV that we are idle. Now would be
@@ -400,6 +401,7 @@ static void pseries_dedicated_idle_sleep(void)
 	 */
 	get_lppaca()->idle = 1;
 	get_lppaca()->donate_dedicated_cpu = 1;
+	in_purr = mfspr(SPRN_PURR);
 
 	/*
 	 * We come in with interrupts disabled, and need_resched()
@@ -432,6 +434,8 @@ static void pseries_dedicated_idle_sleep(void)
 
 out:
 	HMT_medium();
+	out_purr = mfspr(SPRN_PURR);
+	get_lppaca()->wait_state_cycles += out_purr - in_purr;
 	get_lppaca()->donate_dedicated_cpu = 0;
 	get_lppaca()->idle = 0;
 }
Signature · 7 lines
1.5.4.3


Yours Tony

  linux.conf.au    http://www.marchsouth.org/
  Jan 19 - 24 2009 The Australian Linux Technical Conference!