mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
xen: lock pte pages while pinning/unpinning
When a pagetable is created, it is made globally visible in the rmap prio tree before it is pinned via arch_dup_mmap(), and remains in the rmap tree while it is unpinned with arch_exit_mmap(). This means that other CPUs may race with the pinning/unpinning process, and see a pte between when it gets marked RO and actually pinned, causing any pte updates to fail with write-protect faults. As a result, all pte pages must be properly locked, and only unlocked once the pinning/unpinning process has finished. In order to avoid taking spinlocks for the whole pagetable - which may overflow the PREEMPT_BITS portion of preempt counter - it locks and pins each pte page individually, and then finally pins the whole pagetable. Signed-off-by: Jeremy Fitzhardinge <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Hugh Dickens <[email protected]> Cc: David Rientjes <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Keir Fraser <[email protected]> Cc: Jan Beulich <[email protected]>
This commit is contained in:
parent
9f79991d41
commit
74260714c5
3 changed files with 103 additions and 41 deletions
|
|
@ -137,7 +137,6 @@ config SPLIT_PTLOCK_CPUS
|
|||
int
|
||||
default "4096" if ARM && !CPU_CACHE_VIPT
|
||||
default "4096" if PARISC && !PA20
|
||||
default "4096" if XEN
|
||||
default "4"
|
||||
|
||||
#
|
||||
|
|
|
|||
Loading…
Reference in a new issue