Isn't there anyone for taking a time to review this patch? :) On 05/16/2012 11:05 AM, Minchan Kim wrote: > The zsmalloc [un]maps non-physical contiguos pages to contiguous > virual address frequently so it needs frequent tlb-flush. > Now x86 doesn't support common utility function for flushing just > a few tlb entries so zsmalloc have been used set_pte and __flush_tlb_one > which are x86 specific functions. It means zsmalloc have a dependency > with x86. > > This patch adds new function, local_flush_tlb_kernel_range which > are good candidate for being common utility function because other > architecture(ex, MIPS, sh, unicore32, arm, score) already have > supportd it. > > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: Tejun Heo <tj@xxxxxxxxxx> > Cc: David Howells <dhowells@xxxxxxxxxx> > Cc: x86@xxxxxxxxxx > Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> > --- > arch/x86/include/asm/tlbflush.h | 12 ++++++++++++ > drivers/staging/zsmalloc/Kconfig | 2 +- > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h > index 4ece077..6e1253a 100644 > --- a/arch/x86/include/asm/tlbflush.h > +++ b/arch/x86/include/asm/tlbflush.h > @@ -172,4 +172,16 @@ static inline void flush_tlb_kernel_range(unsigned long start, > flush_tlb_all(); > } > > +static inline void local_flush_tlb_kernel_range(unsigned long start, > + unsigned long end) > +{ > + if (cpu_has_invlpg) { > + while (start < end) { > + __flush_tlb_single(start); > + start += PAGE_SIZE; > + } > + } else > + local_flush_tlb(); > +} > + > #endif /* _ASM_X86_TLBFLUSH_H */ > diff --git a/drivers/staging/zsmalloc/Kconfig b/drivers/staging/zsmalloc/Kconfig > index def2483..29819b8 100644 > --- a/drivers/staging/zsmalloc/Kconfig > +++ b/drivers/staging/zsmalloc/Kconfig > @@ -3,7 +3,7 @@ config ZSMALLOC > # arch dependency is because of the use of local_unmap_kernel_range > # in zsmalloc-main.c. > # TODO: implement local_unmap_kernel_range in all architecture. > - depends on (ARM || MIPS || SUPERH) > + depends on (ARM || MIPS || SUPERH || X86) > default n > help > zsmalloc is a slab-based memory allocator designed to store -- Kind regards, Minchan Kim -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>