Update wait_state_cycles in the VPA.
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.
Signed-off-by Tony Breeds <[email protected]>
--- arch/powerpc/platforms/pseries/setup.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
arch/powerpc/platforms/pseries/setup.c +4 -0
@@ -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!