On Fri, 2012-10-26 at 16:41 +0300, Kirill A. Shutemov wrote: > On Fri, Oct 26, 2012 at 03:08:05PM +0200, Peter Zijlstra wrote: > > On Fri, 2012-10-26 at 15:54 +0300, Kirill A. Shutemov wrote: > > > From: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> > > > > > > We check if the pmd entry is the same as on pmd_trans_huge() in > > > handle_mm_fault(). That's enough. > > > > > > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> > > > > Ah indeed, Will mentioned something like this on IRC as well, I hadn't > > gotten around to looking at it -- now have, thanks! > > > > Acked-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> > > > > That said, where in handle_mm_fault() do we wait for a split to > > complete? We have a pmd_trans_huge() && !pmd_trans_splitting(), so a > > fault on a currently splitting pmd will fall through. > > > > Is it the return from the fault on unlikely(pmd_trans_huge()) ? > > Yes, this code will catch it: > > /* if an huge pmd materialized from under us just retry later */ > if (unlikely(pmd_trans_huge(*pmd))) > return 0; > > If the pmd is under splitting it's still a pmd_trans_huge(). OK, so then we simply keep taking the same fault until the split is complete? Wouldn't it be better to wait for it instead of spin on faults? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href