Re: [PATCH v8 8/8] x86/tlb: do flush_tlb_kernel_range by 'invlpg'

From: Alex Shi
Date: Wed Jun 13 2012 - 21:12:08 EST


On 06/13/2012 10:56 PM, Andi Kleen wrote:

> On Tue, Jun 12, 2012 at 05:06:45PM +0800, Alex Shi wrote:
>> This patch do flush_tlb_kernel_range by 'invlpg'. The performance pay
>> and gain was analysed in my patch (x86/flush_tlb: try flush_tlb_single
>> one by one in flush_tlb_range). Now we move this logical into kernel
>> part. The pay is multiple 'invlpg' execution cost, that is same. but
>> the gain(cost reducing of TLB entries refilling) is absolutely
>> increased.
>
> The subtle point is whether INVLPG flushes global pages or not.
> After some digging I found a sentence in the SDM that says it does.
> So it may be safe.


Many thanks for your time!

>
> What does it improve?


I have not specific benchmark for this. partly due to the gain theory
was proved since it is same as previous user process's page table flush.

The user of tlb kernel flush in kernel is vmalloc. and Android binder
IPC subsystem is using it(drivers/staging/android/binder.c)

I am wondering if it can help Andriod on this?
So, add cc to android-kernel@xxxxxxxxxxxxxxxx

> -Andi


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/