Re: [PATCH v6] mm: retry page faults once under the per-VMA lock

From: Matthew Wilcox

Date: Sun Sep 27 2026 - 18:55:39 EST


On Tue, Sep 22, 2026 at 09:55:23AM +0100, Lorenzo Stoakes (ARM) wrote:
> On Mon, Sep 21, 2026 at 07:57:23PM +0100, Matthew Wilcox wrote:
> > more to say on this in two weeks at Plumbers.
>
> I look forward to it :)

So while doing my slides, I realised that what we need to avoid doing
is (a) sleeping while holding the mmap_lock (b) returning RETRY while
holding the VMA lock

And that turns out to be as simple as this patch:

diff --git a/include/linux/mm.h b/include/linux/mm.h
index dd09c438fa23..94ed2333f8d8 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -723,6 +723,8 @@ enum {
*/
static inline bool fault_flag_allow_retry_first(enum fault_flag flags)
{
+ if (flags & FAULT_FLAG_VMA_LOCK)
+ return false;
return (flags & FAULT_FLAG_ALLOW_RETRY) &&
(!(flags & FAULT_FLAG_TRIED));
}

OK, this is a hack. The function is spectacularly badly named, and
needs to be renamed before a patch can go upstream. But this should
fix the contention on mmap_lock.

Could somebody try it? I've verified it boots and runs some userspace
fine, but I don't have the workload to test the contention.