* [RFC PATCH] arm64/hugetlb enable gigantic hugepage
@ 2016-08-18 12:05 Xie Yisheng
2016-08-19 9:49 ` Yisheng Xie
2016-08-19 10:25 ` Michal Hocko
0 siblings, 2 replies; 5+ messages in thread
From: Xie Yisheng @ 2016-08-18 12:05 UTC (permalink / raw)
To: akpm; +Cc: guohanjun, linux-mm, linux-kernel
As we know, arm64 also support gigantic hugepage eg. 1G.
So I try to use this function by adding hugepagesz=1G
in kernel parameters, with CONFIG_CMA=y.
However, when:
echo xx > /sys/kernel/mm/hugepages/hugepages-1048576kB/
nr_hugepages
it failed with the info:
-bash: echo: write error: Invalid argument
This patch make gigantic hugepage can be used on arm64,
when CONFIG_CMA=y or other related configs is enable.
Signed-off-by: Xie Yisheng <xieyisheng1@huawei.com>
---
mm/hugetlb.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 87e11d8..b4d8048 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1022,7 +1022,8 @@ static int hstate_next_node_to_free(struct hstate *h, nodemask_t *nodes_allowed)
((node = hstate_next_node_to_free(hs, mask)) || 1); \
nr_nodes--)
-#if (defined(CONFIG_X86_64) || defined(CONFIG_S390)) && \
+#if (defined(CONFIG_X86_64) || defined(CONFIG_S390) || \
+ defined(CONFIG_ARM64)) && \
((defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || \
defined(CONFIG_CMA))
static void destroy_compound_gigantic_page(struct page *page,
--
1.7.12.4
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [RFC PATCH] arm64/hugetlb enable gigantic hugepage 2016-08-18 12:05 [RFC PATCH] arm64/hugetlb enable gigantic hugepage Xie Yisheng @ 2016-08-19 9:49 ` Yisheng Xie 2016-08-19 10:25 ` Michal Hocko 1 sibling, 0 replies; 5+ messages in thread From: Yisheng Xie @ 2016-08-19 9:49 UTC (permalink / raw) To: akpm Cc: guohanjun, linux-mm, linux-kernel, will.deacon, mhocko, dave.hansen, sudeep.holla, catalin.marinas, mark.rutland, robh+dt, linux-arm-kernel, mike.kravetz, n-horiguchi, hillf.zj, dingel, sfr, kirill.shutemov add more, hi all, Could anyone do me a favor and give some comments? Thanks Xie Yisheng On 2016/8/18 20:05, Xie Yisheng wrote: > As we know, arm64 also support gigantic hugepage eg. 1G. > So I try to use this function by adding hugepagesz=1G > in kernel parameters, with CONFIG_CMA=y. > However, when: > echo xx > /sys/kernel/mm/hugepages/hugepages-1048576kB/ > nr_hugepages > it failed with the info: > -bash: echo: write error: Invalid argument > > This patch make gigantic hugepage can be used on arm64, > when CONFIG_CMA=y or other related configs is enable. > > Signed-off-by: Xie Yisheng <xieyisheng1@huawei.com> > --- > mm/hugetlb.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 87e11d8..b4d8048 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -1022,7 +1022,8 @@ static int hstate_next_node_to_free(struct hstate *h, nodemask_t *nodes_allowed) > ((node = hstate_next_node_to_free(hs, mask)) || 1); \ > nr_nodes--) > > -#if (defined(CONFIG_X86_64) || defined(CONFIG_S390)) && \ > +#if (defined(CONFIG_X86_64) || defined(CONFIG_S390) || \ > + defined(CONFIG_ARM64)) && \ > ((defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || \ > defined(CONFIG_CMA)) > static void destroy_compound_gigantic_page(struct page *page, > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH] arm64/hugetlb enable gigantic hugepage 2016-08-18 12:05 [RFC PATCH] arm64/hugetlb enable gigantic hugepage Xie Yisheng 2016-08-19 9:49 ` Yisheng Xie @ 2016-08-19 10:25 ` Michal Hocko 2016-08-19 11:08 ` Yisheng Xie 1 sibling, 1 reply; 5+ messages in thread From: Michal Hocko @ 2016-08-19 10:25 UTC (permalink / raw) To: Xie Yisheng; +Cc: akpm, guohanjun, linux-mm, linux-kernel On Thu 18-08-16 20:05:29, Xie Yisheng wrote: > As we know, arm64 also support gigantic hugepage eg. 1G. Well, I do not know that. How can I check? Anyway to the patch [...] > index 87e11d8..b4d8048 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -1022,7 +1022,8 @@ static int hstate_next_node_to_free(struct hstate *h, nodemask_t *nodes_allowed) > ((node = hstate_next_node_to_free(hs, mask)) || 1); \ > nr_nodes--) > > -#if (defined(CONFIG_X86_64) || defined(CONFIG_S390)) && \ > +#if (defined(CONFIG_X86_64) || defined(CONFIG_S390) || \ > + defined(CONFIG_ARM64)) && \ > ((defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || \ > defined(CONFIG_CMA)) this ifdef is getting pretty unwieldy. For one thing I think that respective archs should enable ARCH_HAVE_GIGANTIC_PAGES. > static void destroy_compound_gigantic_page(struct page *page, > -- > 1.7.12.4 > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH] arm64/hugetlb enable gigantic hugepage 2016-08-19 10:25 ` Michal Hocko @ 2016-08-19 11:08 ` Yisheng Xie 2016-08-19 11:21 ` Michal Hocko 0 siblings, 1 reply; 5+ messages in thread From: Yisheng Xie @ 2016-08-19 11:08 UTC (permalink / raw) To: Michal Hocko; +Cc: akpm, guohanjun, linux-mm, linux-kernel On 2016/8/19 18:25, Michal Hocko wrote: > On Thu 18-08-16 20:05:29, Xie Yisheng wrote: >> As we know, arm64 also support gigantic hugepage eg. 1G. > > Well, I do not know that. How can I check? > Hi Michal, Thank you for your reply. Maybe you can check the setup_hugepagesz() in ./arch/arm64/hugetlbpage.c if (ps == PMD_SIZE) { hugetlb_add_hstate(PMD_SHIFT - PAGE_SHIFT); } else if (ps == PUD_SIZE) { hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT); } else if (ps == (PAGE_SIZE * CONT_PTES)) { hugetlb_add_hstate(CONT_PTE_SHIFT); } else if (ps == (PMD_SIZE * CONT_PMDS)) { hugetlb_add_hstate((PMD_SHIFT + CONT_PMD_SHIFT) - PAGE_SHIFT); } else { hugetlb_bad_size(); pr_err("hugepagesz: Unsupported page size %lu K\n", ps >> 10); return 0; } I think all of the supported hugepage size on arm64 should be listed here, just as what X86_64 do. Therefore, I also a litter confuse about why not enable it in hugetlb.c, though I have do some sanity test about 1G hugetlb on arm64 and didn't find any bug. Do I miss something? Thanks Xie Yisheng > Anyway to the patch > [...] >> index 87e11d8..b4d8048 100644 >> --- a/mm/hugetlb.c >> +++ b/mm/hugetlb.c >> @@ -1022,7 +1022,8 @@ static int hstate_next_node_to_free(struct hstate *h, nodemask_t *nodes_allowed) >> ((node = hstate_next_node_to_free(hs, mask)) || 1); \ >> nr_nodes--) >> >> -#if (defined(CONFIG_X86_64) || defined(CONFIG_S390)) && \ >> +#if (defined(CONFIG_X86_64) || defined(CONFIG_S390) || \ >> + defined(CONFIG_ARM64)) && \ >> ((defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || \ >> defined(CONFIG_CMA)) > > this ifdef is getting pretty unwieldy. For one thing I think that > respective archs should enable ARCH_HAVE_GIGANTIC_PAGES. I couldn't agree more about it, and will send another version, soon. > >> static void destroy_compound_gigantic_page(struct page *page, >> -- >> 1.7.12.4 >> >> -- >> To unsubscribe, send a message with 'unsubscribe linux-mm' in >> the body to majordomo@kvack.org. For more info on Linux MM, >> see: http://www.linux-mm.org/ . >> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH] arm64/hugetlb enable gigantic hugepage 2016-08-19 11:08 ` Yisheng Xie @ 2016-08-19 11:21 ` Michal Hocko 0 siblings, 0 replies; 5+ messages in thread From: Michal Hocko @ 2016-08-19 11:21 UTC (permalink / raw) To: Yisheng Xie; +Cc: akpm, guohanjun, linux-mm, linux-kernel On Fri 19-08-16 19:08:51, Yisheng Xie wrote: > > > On 2016/8/19 18:25, Michal Hocko wrote: > > On Thu 18-08-16 20:05:29, Xie Yisheng wrote: > >> As we know, arm64 also support gigantic hugepage eg. 1G. > > > > Well, I do not know that. How can I check? > > > Hi Michal, > Thank you for your reply. > Maybe you can check the setup_hugepagesz() OK, I see. The support was added by 084bd29810a5 ("ARM64: mm: HugeTLB support.") in 3.11 but this got later broken. I suspect 944d9fec8d7a ("hugetlb: add support for gigantic page allocation at runtime") in 3.16 but this would require double checking. Information like this would be really helpful in the changelog... -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-08-19 11:21 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-08-18 12:05 [RFC PATCH] arm64/hugetlb enable gigantic hugepage Xie Yisheng 2016-08-19 9:49 ` Yisheng Xie 2016-08-19 10:25 ` Michal Hocko 2016-08-19 11:08 ` Yisheng Xie 2016-08-19 11:21 ` Michal Hocko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox