Skip to content
Snippets Groups Projects
  • Jeremy Fitzhardinge's avatar
    67dd5a25
    xen: disable split pte locks for now · 67dd5a25
    Jeremy Fitzhardinge authored
    
    When pinning and unpinning pagetables, we must protect them against
    being used by other CPUs, lest they see the pagetable in an
    intermediate read-only-but-not-pinned state.
    
    When using split pte locks, doing this properly would require taking
    all the pte locks for the pagetable while pinning, but this may overflow
    the PREEMPT_BITS part of the preempt counter if the process has mapped
    more than about 512M of memory.
    
    However, failing to take the pte locks causes write-protect faults when
    the pageout code is trying to clear the Access bit on a pte which is part
    of a freshy created and still being pinned process after fork.
    
    This is a short-term fix until the problem is solved properly.
    
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
    Acked-by: default avatarRik van Riel <riel@redhat.com>
    Acked-by: default avatarHugh Dickins <hugh@veritas.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andi Kleen <ak@suse.de>
    Cc: Keir Fraser <keir@xensource.com>
    Cc: Jan Beulich <jbeulich@novell.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    67dd5a25
    History
    xen: disable split pte locks for now
    Jeremy Fitzhardinge authored
    
    When pinning and unpinning pagetables, we must protect them against
    being used by other CPUs, lest they see the pagetable in an
    intermediate read-only-but-not-pinned state.
    
    When using split pte locks, doing this properly would require taking
    all the pte locks for the pagetable while pinning, but this may overflow
    the PREEMPT_BITS part of the preempt counter if the process has mapped
    more than about 512M of memory.
    
    However, failing to take the pte locks causes write-protect faults when
    the pageout code is trying to clear the Access bit on a pte which is part
    of a freshy created and still being pinned process after fork.
    
    This is a short-term fix until the problem is solved properly.
    
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
    Acked-by: default avatarRik van Riel <riel@redhat.com>
    Acked-by: default avatarHugh Dickins <hugh@veritas.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andi Kleen <ak@suse.de>
    Cc: Keir Fraser <keir@xensource.com>
    Cc: Jan Beulich <jbeulich@novell.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>