Re: [PATCH] mm: disable preemption in apply_to_pte_range

From: Jeremy Fitzhardinge
Date: Fri Feb 13 2009 - 12:24:57 EST


Peter Zijlstra wrote:
The specific rules are that arch_enter_lazy_mmu_mode()/arch_leave_lazy_mmu_mode() require you to be holding the appropriate pte locks for the ptes you're updating, so preemption is naturally disabled in that case.

Right, except on -rt where the pte lock is a mutex.

Hm, that's interesting. The requirement isn't really "no preemption", its "must not migrate to another cpu". Is there a better way to express that?

This all goes a bit strange with init_mm's non-requirement for taking pte locks. The caller has to arrange for some kind of serialization on updating the range in question, and that could be a mutex. Explicitly disabling preemption in enter_lazy_mmu_mode would make sense for this case, but it would be redundant for the common case of batched updates to usermode ptes.

I really utterly hate how you just plonk preempt_disable() in there
unconditionally and without very clear comments on how and why.

Well, there's the commit comment. They're important, right? That's why we spend time writing good commit comments? So they get read? ;)

OK, I'll add a comment, particularly if there's a more precise way to express "no migration".

I'd rather we'd fix up the init_mm to also have a pte lock.
Yes, I don't like the init_mm-exceptionalism either.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/