From: steve.capper@linaro.org (Steve Capper)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH V2 4/4] arm64: mm: implement get_user_pages_fast
Date: Tue, 11 Mar 2014 10:14:52 +0000 [thread overview]
Message-ID: <20140311101451.GA3660@linaro.org> (raw)
In-Reply-To: <20140211154859.GG3748@arm.com>
On Tue, Feb 11, 2014 at 03:48:59PM +0000, Catalin Marinas wrote:
> On Thu, Feb 06, 2014 at 04:18:51PM +0000, Steve Capper wrote:
> > An implementation of get_user_pages_fast for arm64. It is based on the
> > arm implementation (it has the added ability to walk huge puds) which
> > is loosely on the PowerPC implementation. We disable interrupts in the
> > walker to prevent the call_rcu_sched pagetable freeing code from
> > running under us.
> >
> > We also explicitly fire an IPI in the Transparent HugePage splitting
> > case to prevent splits from interfering with the fast_gup walker.
> > As THP splits are relatively rare, this should not have a noticable
> > overhead.
> >
> > Signed-off-by: Steve Capper <steve.capper@linaro.org>
> > ---
> > arch/arm64/include/asm/pgtable.h | 4 +
> > arch/arm64/mm/Makefile | 2 +-
> > arch/arm64/mm/gup.c | 297 +++++++++++++++++++++++++++++++++++++++
>
> Why don't you make a generic gup.c implementation and let architectures
> select it? I don't see much arm64-specific code in here.
Hi Catalin,
I've had a stab at generalising the gup, but I've found that it varies
too much between architectures to make this practical for me:
* x86 blocks on TLB invalidate so does not need the speculative page
cache logic. Also x86 does not have 64-bit single-copy atomicity for
pte reads, so needs a work around.
* mips is similar-ish to x86.
* powerpc has extra is_hugepd codepaths to identify huge pages.
* superh has sub-architecture pte flags and no 64-bit single-copy
atomicity.
* sparc has hypervisor tlb logic for the pte flags.
* s390 has extra pmd derefence logic and extra barriers that I do not
quite understand.
My plan was to introduce pte_special(.) for arm with LPAE, add
pte_special logic to fast_gup and share the fast_gup between arm and
arm64.
Does this approach sound reasonable?
Thanks,
--
Steve
prev parent reply other threads:[~2014-03-11 10:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-06 16:18 [RFC PATCH V2 0/4] get_user_pages_fast for ARM and ARM64 Steve Capper
2014-02-06 16:18 ` [RFC PATCH V2 1/4] arm: mm: Enable HAVE_RCU_TABLE_FREE logic Steve Capper
2014-02-06 16:18 ` [RFC PATCH V2 2/4] arm: mm: implement get_user_pages_fast Steve Capper
2014-02-06 16:18 ` [RFC PATCH V2 3/4] arm64: mm: Enable HAVE_RCU_TABLE_FREE logic Steve Capper
2014-02-11 2:29 ` Ming Lei
2014-02-11 15:42 ` Catalin Marinas
2014-02-11 16:08 ` Steve Capper
2014-02-06 16:18 ` [RFC PATCH V2 4/4] arm64: mm: implement get_user_pages_fast Steve Capper
2014-02-11 2:30 ` Ming Lei
2014-02-11 15:48 ` Catalin Marinas
2014-02-11 16:13 ` Steve Capper
2014-03-11 10:14 ` Steve Capper [this message]
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=20140311101451.GA3660@linaro.org \
--to=steve.capper@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/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.