On Tue, 2013-03-26 at 11:19 -0400, Rik van Riel wrote: > That makes me wonder, how did mm_take_all_locks used to work before > we turned the anon_vma lock into a mutex? > > The code used to use spin_lock_nest_lock, but still has the potential > to overflow the preempt counter. How did that ever work right?
It did trigger a bunch of warnings, but early on it was understood that KVM would have 'few' vmas when starting and registering the mmu_notifier thing.. then KVM bloated into insanity. But aside from the warnings, if you overflow the regular preempt_count bits, nothing really bad happens because you start poking at softirq nesting, then hardirq etc.. all of those also disable preemption. You'll get a few 'unexpected' side-effects for things like serving_softirq()/in_irq() or whatever those functions are called, but other than that things mostly work. I don't particularly like overflowing preempt count, but its mostly harmless (up to a point). The much worse offender in my book is the duration of the preempt_disable section thus created. Esp with everything in user control, you can basically create an arbitrary long non-preempt section with the semops. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/