Re: [PATCH] powerpc/mm: Update the FORCE_MAX_ZONEORDER range to enable hugetlb
On 20/09/16 12:52, Aneesh Kumar K.V wrote: > Balbir Singh writes: > >> On 20/09/16 03:31, Aneesh Kumar K.V wrote: [...] >> >> Do we need the range to be 12 13? > > static inline bool hstate_is_gigantic(struct hstate *h) > { > return huge_page_order(h) >= MAX_ORDER; > } > > We consider hstate gigantic if it also == MAX_ORDER. Hence it should > be > 12 . > Good point, agreed Balbir Singh.
Re: [PATCH] powerpc/mm: Update the FORCE_MAX_ZONEORDER range to enable hugetlb
Balbir Singh writes: > On 20/09/16 03:31, Aneesh Kumar K.V wrote: >> For hugetlb to work with 4K page size, we need the MAX_ORDER to be more >> than 13. When switching from a 64K page size to 4K linux page size using >> make nconfig, we endup with a CONFIG_FORCE_MAX_ZONEORDER value of 9. >> This results in 16M hugepage to be considered as a gigantic huge page >> which inturn can result in failure to setup hugepages if gigantic >> hugepage support is not enabled. >> >> This also results in kernel crash with 4K radix configuration. We >> hit the below BUG_ON on radix >> >> kernel BUG at mm/huge_memory.c:364! >> Oops: Exception in kernel mode, sig: 5 [#1] >> SMP NR_CPUS=2048 NUMA PowerNV >> Modules linked in: >> CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.8.0-rc1-6-gbae9cc6 #1 >> task: c000f1af8000 task.stack: c000f1aec000 >> NIP: c0c5fa0c LR: c0c5f9d8 CTR: c0c5f9a4 >> REGS: c000f1aef920 TRAP: 0700 Not tainted (4.8.0-rc1-6-gbae9cc6) >> MSR: 900102029033 CR: 24000844 >> XER: >> CFAR: c0c5f9e0 SOFTE: 1 >> . >> NIP [c0c5fa0c] hugepage_init+0x68/0x238 >> LR [c0c5f9d8] hugepage_init+0x34/0x238 >> >> Fixes: a7ee539584acf ("powerpc/Kconfig: Update config option based on page >> size") >> >> Reported-by: Santhosh >> Signed-off-by: Aneesh Kumar K.V >> --- >> arch/powerpc/Kconfig | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig >> index 927d2ab2ce08..792cb1768c8f 100644 >> --- a/arch/powerpc/Kconfig >> +++ b/arch/powerpc/Kconfig >> @@ -637,7 +637,7 @@ config FORCE_MAX_ZONEORDER >> int "Maximum zone order" >> range 8 9 if PPC64 && PPC_64K_PAGES >> default "9" if PPC64 && PPC_64K_PAGES >> -range 9 13 if PPC64 && !PPC_64K_PAGES >> +range 13 13 if PPC64 && !PPC_64K_PAGES > > Do we need the range to be 12 13? static inline bool hstate_is_gigantic(struct hstate *h) { return huge_page_order(h) >= MAX_ORDER; } We consider hstate gigantic if it also == MAX_ORDER. Hence it should be > 12 . > >> default "13" if PPC64 && !PPC_64K_PAGES >> range 9 64 if PPC32 && PPC_16K_PAGES >> default "9" if PPC32 && PPC_16K_PAGES >> > > Otherwise > > Acked-by: Balbir Singh
Re: [PATCH] powerpc/mm: Update the FORCE_MAX_ZONEORDER range to enable hugetlb
On 20/09/16 03:31, Aneesh Kumar K.V wrote: > For hugetlb to work with 4K page size, we need the MAX_ORDER to be more > than 13. When switching from a 64K page size to 4K linux page size using > make nconfig, we endup with a CONFIG_FORCE_MAX_ZONEORDER value of 9. > This results in 16M hugepage to be considered as a gigantic huge page > which inturn can result in failure to setup hugepages if gigantic > hugepage support is not enabled. > > This also results in kernel crash with 4K radix configuration. We > hit the below BUG_ON on radix > > kernel BUG at mm/huge_memory.c:364! > Oops: Exception in kernel mode, sig: 5 [#1] > SMP NR_CPUS=2048 NUMA PowerNV > Modules linked in: > CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.8.0-rc1-6-gbae9cc6 #1 > task: c000f1af8000 task.stack: c000f1aec000 > NIP: c0c5fa0c LR: c0c5f9d8 CTR: c0c5f9a4 > REGS: c000f1aef920 TRAP: 0700 Not tainted (4.8.0-rc1-6-gbae9cc6) > MSR: 900102029033 CR: 24000844 > XER: > CFAR: c0c5f9e0 SOFTE: 1 > . > NIP [c0c5fa0c] hugepage_init+0x68/0x238 > LR [c0c5f9d8] hugepage_init+0x34/0x238 > > Fixes: a7ee539584acf ("powerpc/Kconfig: Update config option based on page > size") > > Reported-by: Santhosh > Signed-off-by: Aneesh Kumar K.V > --- > arch/powerpc/Kconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 927d2ab2ce08..792cb1768c8f 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -637,7 +637,7 @@ config FORCE_MAX_ZONEORDER > int "Maximum zone order" > range 8 9 if PPC64 && PPC_64K_PAGES > default "9" if PPC64 && PPC_64K_PAGES > - range 9 13 if PPC64 && !PPC_64K_PAGES > + range 13 13 if PPC64 && !PPC_64K_PAGES Do we need the range to be 12 13? > default "13" if PPC64 && !PPC_64K_PAGES > range 9 64 if PPC32 && PPC_16K_PAGES > default "9" if PPC32 && PPC_16K_PAGES > Otherwise Acked-by: Balbir Singh
[PATCH] powerpc/mm: Update the FORCE_MAX_ZONEORDER range to enable hugetlb
For hugetlb to work with 4K page size, we need the MAX_ORDER to be more than 13. When switching from a 64K page size to 4K linux page size using make nconfig, we endup with a CONFIG_FORCE_MAX_ZONEORDER value of 9. This results in 16M hugepage to be considered as a gigantic huge page which inturn can result in failure to setup hugepages if gigantic hugepage support is not enabled. This also results in kernel crash with 4K radix configuration. We hit the below BUG_ON on radix kernel BUG at mm/huge_memory.c:364! Oops: Exception in kernel mode, sig: 5 [#1] SMP NR_CPUS=2048 NUMA PowerNV Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.8.0-rc1-6-gbae9cc6 #1 task: c000f1af8000 task.stack: c000f1aec000 NIP: c0c5fa0c LR: c0c5f9d8 CTR: c0c5f9a4 REGS: c000f1aef920 TRAP: 0700 Not tainted (4.8.0-rc1-6-gbae9cc6) MSR: 900102029033 CR: 24000844 XER: CFAR: c0c5f9e0 SOFTE: 1 . NIP [c0c5fa0c] hugepage_init+0x68/0x238 LR [c0c5f9d8] hugepage_init+0x34/0x238 Fixes: a7ee539584acf ("powerpc/Kconfig: Update config option based on page size") Reported-by: Santhosh Signed-off-by: Aneesh Kumar K.V --- arch/powerpc/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 927d2ab2ce08..792cb1768c8f 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -637,7 +637,7 @@ config FORCE_MAX_ZONEORDER int "Maximum zone order" range 8 9 if PPC64 && PPC_64K_PAGES default "9" if PPC64 && PPC_64K_PAGES - range 9 13 if PPC64 && !PPC_64K_PAGES + range 13 13 if PPC64 && !PPC_64K_PAGES default "13" if PPC64 && !PPC_64K_PAGES range 9 64 if PPC32 && PPC_16K_PAGES default "9" if PPC32 && PPC_16K_PAGES -- 2.7.4