From: Minchan Kim <minchan@kernel.org>
To: Seth Jennings <sjenning@linux.vnet.ibm.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
devel@driverdev.osuosl.org,
Dan Magenheimer <dan.magenheimer@oracle.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Andrew Morton <akpm@linux-foundation.org>,
Robert Jennings <rcj@linux.vnet.ibm.com>,
Nitin Gupta <ngupta@vflare.org>, Alex Shi <alex.shi@intel.com>
Subject: Re: [PATCH 3/3] x86: add local_tlb_flush_kernel_range()
Date: Wed, 27 Jun 2012 14:53:33 +0900 [thread overview]
Message-ID: <4FEA9FDD.6030102@kernel.org> (raw)
In-Reply-To: <1340640878-27536-4-git-send-email-sjenning@linux.vnet.ibm.com>
On 06/26/2012 01:14 AM, Seth Jennings wrote:
> This patch adds support for a local_tlb_flush_kernel_range()
> function for the x86 arch. This function allows for CPU-local
> TLB flushing, potentially using invlpg for single entry flushing,
> using an arch independent function name.
>
> Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
Anyway, we don't matter INVLPG_BREAK_EVEN_PAGES's optimization point is 8 or something.
We do care only it works without big problem.
I believe after Alex's patch is settle down, we can fix it if it's wrong.
But it shouldn't prevent merging this patch.
Acked-by: Minchan Kim <minchan@kernel.org>
Nitpick: I expect you change __HAVE_LOCAL_XXX to __HAVE_ARCH_LOCAL_XXX in next spin. :)
> ---
> arch/x86/include/asm/tlbflush.h | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
> index 36a1a2a..92a280b 100644
> --- a/arch/x86/include/asm/tlbflush.h
> +++ b/arch/x86/include/asm/tlbflush.h
> @@ -168,4 +168,25 @@ static inline void flush_tlb_kernel_range(unsigned long start,
> flush_tlb_all();
> }
>
> +#define __HAVE_LOCAL_FLUSH_TLB_KERNEL_RANGE
> +/*
> + * INVLPG_BREAK_EVEN_PAGES is the number of pages after which single tlb
> + * flushing becomes more costly than just doing a complete tlb flush.
> + * While this break even point varies among x86 hardware, tests have shown
> + * that 8 is a good generic value.
> +*/
> +#define INVLPG_BREAK_EVEN_PAGES 8
> +static inline void local_flush_tlb_kernel_range(unsigned long start,
> + unsigned long end)
> +{
> + if (cpu_has_invlpg &&
> + (end - start)/PAGE_SIZE <= INVLPG_BREAK_EVEN_PAGES) {
> + while (start < end) {
> + __flush_tlb_single(start);
> + start += PAGE_SIZE;
> + }
> + } else
> + local_flush_tlb();
> +}
> +
> #endif /* _ASM_X86_TLBFLUSH_H */
--
Kind regards,
Minchan Kim
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Minchan Kim <minchan@kernel.org>
To: Seth Jennings <sjenning@linux.vnet.ibm.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
devel@driverdev.osuosl.org,
Dan Magenheimer <dan.magenheimer@oracle.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Andrew Morton <akpm@linux-foundation.org>,
Robert Jennings <rcj@linux.vnet.ibm.com>,
Nitin Gupta <ngupta@vflare.org>, Alex Shi <alex.shi@intel.com>
Subject: Re: [PATCH 3/3] x86: add local_tlb_flush_kernel_range()
Date: Wed, 27 Jun 2012 14:53:33 +0900 [thread overview]
Message-ID: <4FEA9FDD.6030102@kernel.org> (raw)
In-Reply-To: <1340640878-27536-4-git-send-email-sjenning@linux.vnet.ibm.com>
On 06/26/2012 01:14 AM, Seth Jennings wrote:
> This patch adds support for a local_tlb_flush_kernel_range()
> function for the x86 arch. This function allows for CPU-local
> TLB flushing, potentially using invlpg for single entry flushing,
> using an arch independent function name.
>
> Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
Anyway, we don't matter INVLPG_BREAK_EVEN_PAGES's optimization point is 8 or something.
We do care only it works without big problem.
I believe after Alex's patch is settle down, we can fix it if it's wrong.
But it shouldn't prevent merging this patch.
Acked-by: Minchan Kim <minchan@kernel.org>
Nitpick: I expect you change __HAVE_LOCAL_XXX to __HAVE_ARCH_LOCAL_XXX in next spin. :)
> ---
> arch/x86/include/asm/tlbflush.h | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
> index 36a1a2a..92a280b 100644
> --- a/arch/x86/include/asm/tlbflush.h
> +++ b/arch/x86/include/asm/tlbflush.h
> @@ -168,4 +168,25 @@ static inline void flush_tlb_kernel_range(unsigned long start,
> flush_tlb_all();
> }
>
> +#define __HAVE_LOCAL_FLUSH_TLB_KERNEL_RANGE
> +/*
> + * INVLPG_BREAK_EVEN_PAGES is the number of pages after which single tlb
> + * flushing becomes more costly than just doing a complete tlb flush.
> + * While this break even point varies among x86 hardware, tests have shown
> + * that 8 is a good generic value.
> +*/
> +#define INVLPG_BREAK_EVEN_PAGES 8
> +static inline void local_flush_tlb_kernel_range(unsigned long start,
> + unsigned long end)
> +{
> + if (cpu_has_invlpg &&
> + (end - start)/PAGE_SIZE <= INVLPG_BREAK_EVEN_PAGES) {
> + while (start < end) {
> + __flush_tlb_single(start);
> + start += PAGE_SIZE;
> + }
> + } else
> + local_flush_tlb();
> +}
> +
> #endif /* _ASM_X86_TLBFLUSH_H */
--
Kind regards,
Minchan Kim
next prev parent reply other threads:[~2012-06-27 5:53 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-25 16:14 [PATCH 0/3] zsmalloc: remove x86 dependency Seth Jennings
2012-06-25 16:14 ` Seth Jennings
2012-06-25 16:14 ` [PATCH 1/3] zram/zcache: swtich Kconfig dependency from X86 to ZSMALLOC Seth Jennings
2012-06-25 16:14 ` Seth Jennings
2012-06-27 2:37 ` Minchan Kim
2012-06-27 2:37 ` Minchan Kim
2012-06-27 2:43 ` Greg Kroah-Hartman
2012-06-27 2:43 ` Greg Kroah-Hartman
2012-06-27 2:49 ` Minchan Kim
2012-06-27 2:49 ` Minchan Kim
2012-06-27 3:21 ` Greg Kroah-Hartman
2012-06-27 3:21 ` Greg Kroah-Hartman
2012-06-27 15:40 ` Konrad Rzeszutek Wilk
2012-06-27 15:40 ` Konrad Rzeszutek Wilk
2012-06-27 18:55 ` Greg Kroah-Hartman
2012-06-27 18:55 ` Greg Kroah-Hartman
2012-06-27 18:52 ` Konrad Rzeszutek Wilk
2012-06-27 18:52 ` Konrad Rzeszutek Wilk
2012-06-27 19:29 ` Greg Kroah-Hartman
2012-06-27 19:29 ` Greg Kroah-Hartman
2012-06-25 16:14 ` [PATCH 2/3] zsmalloc: add generic path and remove x86 dependency Seth Jennings
2012-06-25 16:14 ` Seth Jennings
2012-06-25 16:59 ` Greg Kroah-Hartman
2012-06-25 16:59 ` Greg Kroah-Hartman
2012-06-25 17:10 ` Seth Jennings
2012-06-25 17:10 ` Seth Jennings
2012-06-25 17:19 ` Greg Kroah-Hartman
2012-06-25 17:19 ` Greg Kroah-Hartman
2012-06-25 18:24 ` Seth Jennings
2012-06-25 18:24 ` Seth Jennings
2012-06-25 23:37 ` Greg Kroah-Hartman
2012-06-25 23:37 ` Greg Kroah-Hartman
2012-06-27 5:28 ` Minchan Kim
2012-06-27 5:28 ` Minchan Kim
2012-06-27 19:09 ` Seth Jennings
2012-06-27 19:09 ` Seth Jennings
2012-06-28 0:20 ` Minchan Kim
2012-06-28 0:20 ` Minchan Kim
2012-06-25 16:14 ` [PATCH 3/3] x86: add local_tlb_flush_kernel_range() Seth Jennings
2012-06-25 16:14 ` Seth Jennings
2012-06-25 23:01 ` Konrad Rzeszutek Wilk
2012-06-25 23:01 ` Konrad Rzeszutek Wilk
2012-06-26 13:39 ` Seth Jennings
2012-06-26 13:39 ` Seth Jennings
2012-06-27 5:53 ` Minchan Kim [this message]
2012-06-27 5:53 ` Minchan Kim
2012-06-27 6:14 ` Alex Shi
2012-06-27 6:14 ` Alex Shi
2012-06-27 6:26 ` Minchan Kim
2012-06-27 6:26 ` Minchan Kim
2012-06-27 15:12 ` Dan Magenheimer
2012-06-27 15:12 ` Dan Magenheimer
2012-06-27 15:39 ` Konrad Rzeszutek Wilk
2012-06-27 15:39 ` Konrad Rzeszutek Wilk
2012-06-27 18:35 ` Seth Jennings
2012-06-27 18:35 ` Seth Jennings
2012-06-27 18:33 ` Seth Jennings
2012-06-27 18:33 ` Seth Jennings
2012-06-27 21:15 ` Dan Magenheimer
2012-06-27 21:15 ` Dan Magenheimer
2012-06-27 21:41 ` Seth Jennings
2012-06-27 21:41 ` Seth Jennings
2012-06-28 2:03 ` Alex Shi
2012-06-28 2:03 ` Alex Shi
2012-06-28 15:21 ` Seth Jennings
2012-06-28 15:21 ` Seth Jennings
2012-06-29 0:19 ` Alex Shi
2012-06-29 0:19 ` Alex Shi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FEA9FDD.6030102@kernel.org \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alex.shi@intel.com \
--cc=dan.magenheimer@oracle.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ngupta@vflare.org \
--cc=rcj@linux.vnet.ibm.com \
--cc=sjenning@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.