x86: add kernel_map_pages() to 64-bit
needed for DEBUG_PAGEALLOC support and for unification. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
f5a50ce1bf
Коммит
ace63e3743
|
@ -260,3 +260,33 @@ void global_flush_tlb(void)
|
||||||
on_each_cpu(flush_kernel_map, NULL, 1, 1);
|
on_each_cpu(flush_kernel_map, NULL, 1, 1);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(global_flush_tlb);
|
EXPORT_SYMBOL(global_flush_tlb);
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_PAGEALLOC
|
||||||
|
void kernel_map_pages(struct page *page, int numpages, int enable)
|
||||||
|
{
|
||||||
|
if (PageHighMem(page))
|
||||||
|
return;
|
||||||
|
if (!enable) {
|
||||||
|
debug_check_no_locks_freed(page_address(page),
|
||||||
|
numpages * PAGE_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If page allocator is not up yet then do not call c_p_a():
|
||||||
|
*/
|
||||||
|
if (!debug_pagealloc_enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* the return value is ignored - the calls cannot fail,
|
||||||
|
* large pages are disabled at boot time.
|
||||||
|
*/
|
||||||
|
change_page_attr(page, numpages, enable ? PAGE_KERNEL : __pgprot(0));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* we should perform an IPI and flush all tlbs,
|
||||||
|
* but that can deadlock->flush only current cpu.
|
||||||
|
*/
|
||||||
|
__flush_tlb_all();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
Загрузка…
Ссылка в новой задаче