Messages in this thread | | | Date | Thu, 1 Apr 2010 17:42:49 +0200 | From | Andrea Arcangeli <> | Subject | Re: [COUNTERPATCH] mm: avoid overflowing preempt_count() in mmu_take_all_locks() |
| |
On Thu, Apr 01, 2010 at 01:43:14PM +0200, Peter Zijlstra wrote: > On Thu, 2010-04-01 at 13:27 +0200, Peter Zijlstra wrote: > > > > I've almost got a patch done that converts those two, still need to look > > where that tasklist_lock muck happens. > > OK, so the below builds and boots, only need to track down that > tasklist_lock nesting, but I got to run an errand first.
You should have a look at my old patchset where Christoph already implemented this (and not for decreasing latency but to allow scheduling in mmu notifier handlers, only needed by XPMEM):
http://www.kernel.org/pub/linux/kernel/people/andrea/patches/v2.6/2.6.26-rc7/mmu-notifier-v18/
The ugliest part of it (that I think you missed below) is the breakage of the RCU locking in the anon-vma which requires adding refcounting to it. That was the worst part of the conversion as far as I can tell.
http://www.kernel.org/pub/linux/kernel/people/andrea/patches/v2.6/2.6.26-rc7/mmu-notifier-v18/anon-vma
I personally prefer read-write locks that Christoph used for both of them, but I'm not against mutex either. Still the refcounting problem should be the same as it's introduced by allowing the critical sections under anon_vma->lock to schedule (no matter if it's mutex or read-write sem).
| |