On Sat, 26 Mar 2016 01:25:04 -0700 Nadav Amit <na...@vmware.com> wrote:

> TLB_REMOTE_SEND_IPI was recently introduced, but it counts bytes instead
> of pages. In addition, it does not report correctly the case in which
> flush_tlb_page flushes a page. Fix it to be consistent with other TLB
> counters.
> 
> Fixes: 4595f9620cda8a1e973588e743cf5f8436dd20c6

I think you mean 5b74283ab251b9 ("x86, mm: trace when an IPI is about
to be sent")?

> --- a/arch/x86/mm/tlb.c
> +++ b/arch/x86/mm/tlb.c
> @@ -106,8 +106,6 @@ static void flush_tlb_func(void *info)
>  
>       if (f->flush_mm != this_cpu_read(cpu_tlbstate.active_mm))
>               return;
> -     if (!f->flush_end)
> -             f->flush_end = f->flush_start + PAGE_SIZE;
>  
>       count_vm_tlb_event(NR_TLB_REMOTE_FLUSH_RECEIVED);
>       if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK) {
> @@ -135,12 +133,20 @@ void native_flush_tlb_others(const struct cpumask 
> *cpumask,
>                                unsigned long end)
>  {
>       struct flush_tlb_info info;
> +
> +     if (end == 0)
> +             end = start + PAGE_SIZE;
>       info.flush_mm = mm;
>       info.flush_start = start;
>       info.flush_end = end;
>  
>       count_vm_tlb_event(NR_TLB_REMOTE_FLUSH);
> -     trace_tlb_flush(TLB_REMOTE_SEND_IPI, end - start);
> +     if (end == TLB_FLUSH_ALL)
> +             trace_tlb_flush(TLB_REMOTE_SEND_IPI, TLB_FLUSH_ALL);
> +     else
> +             trace_tlb_flush(TLB_REMOTE_SEND_IPI,
> +                             (end - start) >> PAGE_SHIFT);
> +
>       if (is_uv_system()) {
>               unsigned int cpu;

Reply via email to