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" <[email protected]>
> > > 
> > > 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 <[email protected]>
> > 
> > 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 <[email protected]>
> > 
> > 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 from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to