Skip to content

Commit

Permalink
riscv: add ARCH_SUPPORTS_DEBUG_PAGEALLOC support
Browse files Browse the repository at this point in the history
ARCH_SUPPORTS_DEBUG_PAGEALLOC provides a hook to map and unmap
pages for debugging purposes. Implement the __kernel_map_pages
functions to fill the poison pattern.

Signed-off-by: Zong Li <zong.li@sifive.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
  • Loading branch information
zongbox authored and palmer-dabbelt committed Mar 26, 2020
1 parent 395a21f commit 5fde3db
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
3 changes: 3 additions & 0 deletions arch/riscv/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,9 @@ config ARCH_SELECT_MEMORY_MODEL
config ARCH_WANT_GENERAL_HUGETLB
def_bool y

config ARCH_SUPPORTS_DEBUG_PAGEALLOC
def_bool y

config SYS_SUPPORTS_HUGETLBFS
def_bool y

Expand Down
13 changes: 13 additions & 0 deletions arch/riscv/mm/pageattr.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,3 +172,16 @@ int set_direct_map_default_noflush(struct page *page)

return walk_page_range(&init_mm, start, end, &pageattr_ops, &masks);
}

void __kernel_map_pages(struct page *page, int numpages, int enable)
{
if (!debug_pagealloc_enabled())
return;

if (enable)
__set_memory((unsigned long)page_address(page), numpages,
__pgprot(_PAGE_PRESENT), __pgprot(0));
else
__set_memory((unsigned long)page_address(page), numpages,
__pgprot(0), __pgprot(_PAGE_PRESENT));
}

0 comments on commit 5fde3db

Please sign in to comment.