On Fri, Oct 18, 2013 at 02:07:11PM +0100, Steve Capper wrote:
This patch series implements get_user_pages_fast on ARM. Unlike other architectures, we do not use IPIs/disabled IRQs as a blocking mechanism to protect the page table walker. Instead an atomic counter is used to indicate how many fast gup walkers are active on an address space, and any code that would cause them problems (THP splitting or code that could free a page table page) spins on positive values of this counter.
Curious: did you try benchmarking the two schemes? Whilst I expect this algorithm to be better on ARM, exclusive memory accesses aren't free and we're adding code to the fast path.
Will