Subject: Re: hypervisor call tracepoints hcall_stats touchup.

From: Anton Blanchard <[email-masked]>
Date: Thu, 26 Nov 2009 14:28:22 +1100

Hi Will,

> The tb_total and purr_total values reported via the hcall_stats code
> should be cumulative, rather than being replaced by the latest delta tb
> or purr value. 
> 
> Tested-by: Will Schmidt <[email-masked]>
> Signed-off-by: Will Schmidt <[email-masked]>

Ouch! Nice catch.

Acked-by: Anton Blanchard <[email-masked]>

Anton

> [ This is a touch-up to the "[3/6] powerpc: tracing: Add hypervisor call
> tracepoints" patch submitted by Anton a few weeks back, so I've copied
> folks Anton had on CC for his original patch, this fix is rather ppc
> specific, so can probably go in via the ppc tree, but I've no real
> preference. ]
> 
> diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c
> index 2f58c71..1fefae7 100644
> --- a/arch/powerpc/platforms/pseries/hvCall_inst.c
> +++ b/arch/powerpc/platforms/pseries/hvCall_inst.c
> @@ -124,8 +124,8 @@ static void probe_hcall_exit(unsigned long opcode, unsigned long retval,
>  
>  	h = &__get_cpu_var(hcall_stats)[opcode / 4];
>  	h->num_calls++;
> -	h->tb_total = mftb() - h->tb_start;
> -	h->purr_total = mfspr(SPRN_PURR) - h->purr_start;
> +	h->tb_total += mftb() - h->tb_start;
> +	h->purr_total += mfspr(SPRN_PURR) - h->purr_start;
>  
>  	put_cpu_var(hcall_stats);
>  }
>