| 
         
xen-devel
[Xen-devel] Re: [PATCH] fix pgd_lock deadlock
 
| 
To:  | 
Andrea Arcangeli <aarcange@xxxxxxxxxx> | 
 
| 
Subject:  | 
[Xen-devel] Re: [PATCH] fix pgd_lock deadlock | 
 
| 
From:  | 
Thomas Gleixner <tglx@xxxxxxxxxxxxx> | 
 
| 
Date:  | 
Tue, 15 Feb 2011 21:26:35 +0100 (CET) | 
 
| 
Cc:  | 
Jeremy Fitzhardinge <jeremy@xxxxxxxx>,	"Xen-devel@xxxxxxxxxxxxxxxxxxx" <Xen-devel@xxxxxxxxxxxxxxxxxxx>,	Ian Campbell <Ian.Campbell@xxxxxxxxxx>,	the arch/x86 maintainers <x86@xxxxxxxxxx>, Hugh Dickins <hughd@xxxxxxxxxx>,	Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>,	Jan Beulich <JBeulich@xxxxxxxxxx>, Andi Kleen <ak@xxxxxxx>,	Johannes Weiner <jweiner@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>,	Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,	Larry Woodman <lwoodman@xxxxxxxxxx> | 
 
| 
Delivery-date:  | 
Tue, 15 Feb 2011 12:28:21 -0800 | 
 
| 
Envelope-to:  | 
www-data@xxxxxxxxxxxxxxxxxxx | 
 
| 
In-reply-to:  | 
<alpine.LFD.2.00.1102152102530.26192@xxxxxxxxxxxxxxxxxxxxxxx> | 
 
| 
List-help:  | 
<mailto:xen-devel-request@lists.xensource.com?subject=help> | 
 
| 
List-id:  | 
Xen developer discussion <xen-devel.lists.xensource.com> | 
 
| 
List-post:  | 
<mailto:xen-devel@lists.xensource.com> | 
 
| 
List-subscribe:  | 
<http://lists.xensource.com/mailman/listinfo/xen-devel>,	<mailto:xen-devel-request@lists.xensource.com?subject=subscribe> | 
 
| 
List-unsubscribe:  | 
<http://lists.xensource.com/mailman/listinfo/xen-devel>,	<mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe> | 
 
| 
References:  | 
<4CB76E8B.2090309@xxxxxxxx> <4CC0AB73.8060609@xxxxxxxx>	<20110203024838.GI5843@xxxxxxxxxxxxx> <4D4B1392.5090603@xxxxxxxx>	<20110204012109.GP5843@xxxxxxxxxxxxx> <4D4C6F45.6010204@xxxxxxxx>	<20110207232045.GJ3347@xxxxxxxxxxxxx>	<20110215190710.GL5935@xxxxxxxxxxxxx>	<alpine.LFD.2.00.1102152020590.26192@xxxxxxxxxxxxxxxxxxxxxxx>	<20110215195450.GO5935@xxxxxxxxxxxxx>	<alpine.LFD.2.00.1102152102530.26192@xxxxxxxxxxxxxxxxxxxxxxx> | 
 
| 
Sender:  | 
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx | 
 
| 
User-agent:  | 
Alpine 2.00 (LFD 1167 2008-08-23) | 
 
 
 
On Tue, 15 Feb 2011, Thomas Gleixner wrote:
> On Tue, 15 Feb 2011, Andrea Arcangeli wrote:
> > On Tue, Feb 15, 2011 at 08:26:51PM +0100, Thomas Gleixner wrote:
> > 
> > With NR_CPUs < 4, or with THP enabled, rmap.c will do
> > spin_lock(&mm->page_table_lock) (or pte_offset_map_lock where the lock
> > is still mm->page_table_lock and not the PT lock). Then it will send
> > IPIs to flush the tlb of the other CPUs.
> > 
> > But the other CPU is running the vmalloc_sync_all, and it is trying to
> > take the page_table_lock with irq disabled. It will never take the
> > lock because the CPU waiting the IPI delivery holds it. And it will
> > never run the IPI because it has irqs disabled.
> 
> Ok, that makes sense :)
>  
> > Now the big question is if anything is taking the pgd_lock from
> > irqs. Normal testing could never reveal it as even if it happens it
> > has a slim chance to happen while the pgd_lock is already hold by
> > normal kernel context. But the VM_BUG_ON(in_interrupt()) should
> > hopefully have revealed it already if it ever happened, I hope.
> > 
> > Clearly we could try to fix it in other ways, but still if there's no
> > reason to do the _irqsave this sounds a good idea to apply my fix
> > anyway.
> 
> Did you try with DEBUG_PAGEALLOC, which is calling into cpa quite a
> lot?
Another thing. You check for in_interrupt(), but what makes sure that
the code which takes pgd_lock is never taken with interrupts disabled
except during early boot ?
Thanks,
        tglx
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- [Xen-devel] Re: [PATCH] x86: hold mm->page_table_lock while doing	vmalloc_sync, Andrea Arcangeli
- [Xen-devel] Re: [PATCH] x86: hold mm->page_table_lock while doing	vmalloc_sync, Jeremy Fitzhardinge
- [Xen-devel] Re: [PATCH] x86: hold mm->page_table_lock while doing	vmalloc_sync, Andrea Arcangeli
- [Xen-devel] Re: [PATCH] x86: hold mm->page_table_lock while doing	vmalloc_sync, Jeremy Fitzhardinge
 - [Xen-devel] Re: [PATCH] x86: hold mm->page_table_lock while doing	vmalloc_sync, Andrea Arcangeli
 - [Xen-devel] [PATCH] fix pgd_lock deadlock, Andrea Arcangeli
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Thomas Gleixner
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Larry Woodman
 
- [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Andrea Arcangeli
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Thomas Gleixner
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock,
Thomas Gleixner <=
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Andrea Arcangeli
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Thomas Gleixner
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Andrea Arcangeli
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Peter Zijlstra
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Andrea Arcangeli
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Ingo Molnar
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Andrea Arcangeli
 - [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Rik van Riel
 
- [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Ingo Molnar
 
  
  
  
- [Xen-devel] Re: [PATCH] fix pgd_lock deadlock, Andrea Arcangeli
 
 
 |  
  
 | 
    |