x86/mm: Flush lazy MMU when DEBUG_PAGEALLOC is set
When CONFIG_DEBUG_PAGEALLOC is set page table updates made by kernel_map_pages() are not made visible (via TLB flush) immediately if lazy MMU is on. In environments that support lazy MMU (e.g. Xen) this may lead to fatal page faults, for example, when zap_pte_range() needs to allocate pages in __tlb_remove_page() -> tlb_next_batch(). Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: konrad.wilk@oracle.com Link: http://lkml.kernel.org/r/1365703192-2089-1-git-send-email-boris.ostrovsky@oracle.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
Родитель
18699739b6
Коммит
26564600c9
|
@ -1413,6 +1413,8 @@ void kernel_map_pages(struct page *page, int numpages, int enable)
|
|||
* but that can deadlock->flush only current cpu:
|
||||
*/
|
||||
__flush_tlb_all();
|
||||
|
||||
arch_flush_lazy_mmu_mode();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HIBERNATION
|
||||
|
|
Загрузка…
Ссылка в новой задаче