From: Peter Zijlstra <peterz@infradead.org>
To: Alex Shi <alex.shi@intel.com>
Cc: Nick Piggin <npiggin@gmail.com>,
tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com,
arnd@arndb.de, rostedt@goodmis.org, fweisbec@gmail.com,
jeremy@goop.org, riel@redhat.com, luto@mit.edu, avi@redhat.com,
len.brown@intel.com, dhowells@redhat.com, fenghua.yu@intel.com,
borislav.petkov@amd.com, yinghai@kernel.org, ak@linux.intel.com,
cpw@sgi.com, steiner@sgi.com, akpm@linux-foundation.org,
penberg@kernel.org, hughd@google.com, rientjes@google.com,
kosaki.motohiro@jp.fujitsu.com, n-horiguchi@ah.jp.nec.com,
tj@kernel.org, oleg@redhat.com, axboe@kernel.dk,
jmorris@namei.org, kamezawa.hiroyu@jp.fujitsu.com,
viro@zeniv.linux.org.uk, linux-kernel@vger.kernel.org,
yongjie.ren@intel.com, linux-arch@vger.kernel.org
Subject: Re: [PATCH v5 6/7] x86/tlb: optimizing flush_tlb_mm
Date: Wed, 16 May 2012 10:00:39 +0200 [thread overview]
Message-ID: <1337155239.27694.131.camel@twins> (raw)
In-Reply-To: <4FB34D49.1060809@intel.com>
On Wed, 2012-05-16 at 14:46 +0800, Alex Shi wrote:
> diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
> index 75e888b..ed6642a 100644
> --- a/include/asm-generic/tlb.h
> +++ b/include/asm-generic/tlb.h
> @@ -86,6 +86,8 @@ struct mmu_gather {
> #ifdef CONFIG_HAVE_RCU_TABLE_FREE
> struct mmu_table_batch *batch;
> #endif
> + unsigned long start;
> + unsigned long end;
> unsigned int need_flush : 1, /* Did free PTEs */
> fast_mode : 1; /* No batching */
>
> diff --git a/mm/memory.c b/mm/memory.c
> index 6105f47..b176172 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -206,6 +206,8 @@ void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, bool fullmm)
> tlb->mm = mm;
>
> tlb->fullmm = fullmm;
> + tlb->start = -1UL;
> + tlb->end = 0;
> tlb->need_flush = 0;
> tlb->fast_mode = (num_possible_cpus() == 1);
> tlb->local.next = NULL;
> @@ -248,6 +250,8 @@ void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long e
> {
> struct mmu_gather_batch *batch, *next;
>
> + tlb->start = start;
> + tlb->end = end;
> tlb_flush_mmu(tlb);
>
> /* keep the page table cache within bounds */
> @@ -1204,6 +1208,8 @@ again:
> */
> if (force_flush) {
> force_flush = 0;
> + tlb->start = addr;
> + tlb->end = end;
> tlb_flush_mmu(tlb);
> if (addr != end)
> goto again;
ARGH.. no. What bit about you don't need to modify the generic code
don't you get?
Both ARM and IA64 (and possible others) already do range tracking, you
don't need to modify mm/memory.c _AT_ALL_.
Also, if you modify include/asm-generic/tlb.h to include the ranges it
would be very nice to make that optional, most archs using it won't use
this.
Now IF you're going to change the tlb interface like this, you're going
to get to do it for all architectures, along with a sane benchmark to
show its beneficial to track ranges like this.
But as it stands, people are still questioning the validity of your
mprotect micro-bench, so no, you don't get to change the tlb interface.
next prev parent reply other threads:[~2012-05-16 8:01 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1337072138-8323-1-git-send-email-alex.shi@intel.com>
[not found] ` <1337072138-8323-7-git-send-email-alex.shi@intel.com>
2012-05-15 9:15 ` [PATCH v5 6/7] x86/tlb: optimizing flush_tlb_mm Nick Piggin
2012-05-15 9:17 ` Nick Piggin
2012-05-15 12:58 ` Luming Yu
2012-05-15 13:06 ` Peter Zijlstra
2012-05-15 13:27 ` Luming Yu
2012-05-15 13:28 ` Alex Shi
2012-05-15 13:28 ` Alex Shi
2012-05-15 13:33 ` Alex Shi
2012-05-15 13:39 ` Steven Rostedt
2012-05-15 14:04 ` Borislav Petkov
2012-05-15 13:08 ` Luming Yu
2012-05-15 13:08 ` Luming Yu
2012-05-15 14:07 ` Alex Shi
2012-05-15 9:18 ` Peter Zijlstra
2012-05-15 9:52 ` Nick Piggin
2012-05-15 10:00 ` Peter Zijlstra
2012-05-15 10:06 ` Nick Piggin
2012-05-15 10:13 ` Peter Zijlstra
2012-05-15 14:04 ` Alex Shi
2012-05-15 13:24 ` Alex Shi
2012-05-15 14:36 ` Peter Zijlstra
2012-05-15 14:36 ` Peter Zijlstra
2012-05-15 14:57 ` Peter Zijlstra
2012-05-15 15:01 ` Alex Shi
2012-05-16 6:46 ` Alex Shi
2012-05-16 8:00 ` Peter Zijlstra [this message]
2012-05-16 8:04 ` Peter Zijlstra
2012-05-16 8:53 ` Alex Shi
2012-05-16 8:58 ` Peter Zijlstra
2012-05-16 8:58 ` Peter Zijlstra
2012-05-16 10:58 ` Alex Shi
2012-05-16 11:04 ` Peter Zijlstra
2012-05-16 12:57 ` Alex Shi
2012-05-16 13:34 ` Alex Shi
2012-05-16 21:09 ` Peter Zijlstra
2012-05-17 0:43 ` Alex Shi
2012-05-17 2:07 ` Steven Rostedt
2012-05-17 2:07 ` Steven Rostedt
2012-05-17 8:04 ` Alex Shi
2012-05-17 2:14 ` Paul Mundt
2012-05-16 13:44 ` Alex Shi
2012-05-16 13:44 ` 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=1337155239.27694.131.camel@twins \
--to=peterz@infradead.org \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=alex.shi@intel.com \
--cc=arnd@arndb.de \
--cc=avi@redhat.com \
--cc=axboe@kernel.dk \
--cc=borislav.petkov@amd.com \
--cc=cpw@sgi.com \
--cc=dhowells@redhat.com \
--cc=fenghua.yu@intel.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=hughd@google.com \
--cc=jeremy@goop.org \
--cc=jmorris@namei.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=len.brown@intel.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@mit.edu \
--cc=mingo@redhat.com \
--cc=n-horiguchi@ah.jp.nec.com \
--cc=npiggin@gmail.com \
--cc=oleg@redhat.com \
--cc=penberg@kernel.org \
--cc=riel@redhat.com \
--cc=rientjes@google.com \
--cc=rostedt@goodmis.org \
--cc=steiner@sgi.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=viro@zeniv.linux.org.uk \
--cc=yinghai@kernel.org \
--cc=yongjie.ren@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox