From 3949ab65a836691bbf95e706e616d6eea311e22e Mon Sep 17 00:00:00 2001 From: Masamichi Takagi Date: Thu, 10 Dec 2020 15:45:58 +0900 Subject: [PATCH] TO RESET: Add kernel argument to toggle on-demand paging for hugetlbfs map Change-Id: Id748e0a2afc4ea59142fedb652a15b4007c5dee4 --- kernel/hugefileobj.c | 2 +- kernel/include/page.h | 3 +++ kernel/mem.c | 10 ++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/kernel/hugefileobj.c b/kernel/hugefileobj.c index cd300fd9..628cf38f 100644 --- a/kernel/hugefileobj.c +++ b/kernel/hugefileobj.c @@ -283,7 +283,7 @@ int hugefileobj_create(struct memobj *memobj, size_t len, off_t off, obj->pgsize); #ifdef ENABLE_FUGAKU_HACKS - { + if (!hugetlbfs_on_demand) { int pgind; int npages; diff --git a/kernel/include/page.h b/kernel/include/page.h index 617bdf2d..cead7c47 100644 --- a/kernel/include/page.h +++ b/kernel/include/page.h @@ -69,4 +69,7 @@ static inline int page_is_multi_mapped(struct page *page) /* Should we take page faults on ANONYMOUS mappings? */ extern int anon_on_demand; +#ifdef ENABLE_FUGAKU_HACKS +extern int hugetlbfs_on_demand; +#endif #endif diff --git a/kernel/mem.c b/kernel/mem.c index c337bac2..7e0b83cc 100644 --- a/kernel/mem.c +++ b/kernel/mem.c @@ -63,6 +63,9 @@ extern int interrupt_from_user(void *); struct tlb_flush_entry tlb_flush_vector[IHK_TLB_FLUSH_IRQ_VECTOR_SIZE]; int anon_on_demand = 0; +#ifdef ENABLE_FUGAKU_HACKS +int hugetlbfs_on_demand; +#endif int sysctl_overcommit_memory = OVERCOMMIT_ALWAYS; static struct ihk_mc_pa_ops *pa_ops; @@ -2041,6 +2044,13 @@ void mem_init(void) anon_on_demand = 1; } +#ifdef ENABLE_FUGAKU_HACKS + if (find_command_line("hugetlbfs_on_demand")) { + kprintf("Demand paging on hugetlbfs mappings enabled.\n"); + hugetlbfs_on_demand = 1; + } +#endif + /* Init distance vectors */ numa_distances_init(); }