From: Steve Capper <steve.capper@linaro.org> To: linux-mm@kvack.org, x86@kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Michal Hocko <mhocko@suse.cz>, Ken Chen <kenchen@google.com>, Mel Gorman <mgorman@suse.de>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Steve Capper <steve.capper@linaro.org> Subject: [RFC PATCH 8/9] ARM64: mm: Introduce MAX_ZONE_ORDER for 64K and THP. Date: Tue, 30 Apr 2013 17:30:47 +0100 [thread overview] Message-ID: <1367339448-21727-9-git-send-email-steve.capper@linaro.org> (raw) In-Reply-To: <1367339448-21727-1-git-send-email-steve.capper@linaro.org> The buddy allocator has a default order of 11, which is too low to allocate enough memory for 512MB Transparent HugePages if our base page size is 64K. For any order less than 13, the combination of THP with 64K pages will cause a compile error. This patch introduces the MAX_ZONE_ORDER config option that allows one to explicitly override the order of the buddy allocator. If 64K pages and THP are enabled the minimum value is set to 13. Signed-off-by: Steve Capper <steve.capper@linaro.org> --- arch/arm64/Kconfig | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 16aa780..908fd95 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -196,6 +196,23 @@ config ARCH_WANT_HUGE_PMD_SHARE source "mm/Kconfig" +config FORCE_MAX_ZONEORDER + int "Maximum zone order" + range 11 64 if !(ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) + range 13 64 if ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE + default "11" if !(ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) + default "13" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) + help + The kernel memory allocator divides physically contiguous memory + blocks into "zones", where each zone is a power of two number of + pages. This option selects the largest power of two that the kernel + keeps in the memory allocator. If you need to allocate very large + blocks of physically contiguous memory, then you may need to + increase this value. + + This config option is actually maximum order plus one. For example, + a value of 11 means that the largest free memory block is 2^10 pages. + endmenu menu "Boot options" -- 1.8.1.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>
WARNING: multiple messages have this Message-ID (diff)
From: Steve Capper <steve.capper@linaro.org> To: linux-mm@kvack.org, x86@kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Michal Hocko <mhocko@suse.cz>, Ken Chen <kenchen@google.com>, Mel Gorman <mgorman@suse.de>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Steve Capper <steve.capper@linaro.org> Subject: [RFC PATCH 8/9] ARM64: mm: Introduce MAX_ZONE_ORDER for 64K and THP. Date: Tue, 30 Apr 2013 17:30:47 +0100 [thread overview] Message-ID: <1367339448-21727-9-git-send-email-steve.capper@linaro.org> (raw) Message-ID: <20130430163047.-TbWr3UGc9bzxkoMtylflHoRa2DiH6OLEzoXn4Mxy-s@z> (raw) In-Reply-To: <1367339448-21727-1-git-send-email-steve.capper@linaro.org> The buddy allocator has a default order of 11, which is too low to allocate enough memory for 512MB Transparent HugePages if our base page size is 64K. For any order less than 13, the combination of THP with 64K pages will cause a compile error. This patch introduces the MAX_ZONE_ORDER config option that allows one to explicitly override the order of the buddy allocator. If 64K pages and THP are enabled the minimum value is set to 13. Signed-off-by: Steve Capper <steve.capper@linaro.org> --- arch/arm64/Kconfig | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 16aa780..908fd95 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -196,6 +196,23 @@ config ARCH_WANT_HUGE_PMD_SHARE source "mm/Kconfig" +config FORCE_MAX_ZONEORDER + int "Maximum zone order" + range 11 64 if !(ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) + range 13 64 if ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE + default "11" if !(ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) + default "13" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) + help + The kernel memory allocator divides physically contiguous memory + blocks into "zones", where each zone is a power of two number of + pages. This option selects the largest power of two that the kernel + keeps in the memory allocator. If you need to allocate very large + blocks of physically contiguous memory, then you may need to + increase this value. + + This config option is actually maximum order plus one. For example, + a value of 11 means that the largest free memory block is 2^10 pages. + endmenu menu "Boot options" -- 1.8.1.4
next prev parent reply other threads:[~2013-04-30 16:30 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-04-30 16:30 [RFC PATCH 0/9] HugeTLB and THP support for ARM64 Steve Capper 2013-04-30 16:30 ` [RFC PATCH 1/9] mm: hugetlb: Copy huge_pmd_share from x86 to mm Steve Capper 2013-04-30 16:30 ` [RFC PATCH 2/9] x86: mm: Remove x86 version of huge_pmd_share Steve Capper 2013-04-30 16:30 ` [RFC PATCH 3/9] mm: hugetlb: Copy general hugetlb code from x86 to mm Steve Capper 2013-04-30 16:30 ` Steve Capper 2013-04-30 16:48 ` Catalin Marinas 2013-04-30 16:48 ` Catalin Marinas 2013-04-30 16:30 ` [RFC PATCH 4/9] x86: mm: Remove general hugetlb code from x86 Steve Capper 2013-04-30 16:30 ` [RFC PATCH 5/9] ARM64: mm: Add support for flushing huge pages Steve Capper 2013-05-01 11:05 ` Will Deacon 2013-05-01 11:05 ` Will Deacon 2013-05-01 11:31 ` Catalin Marinas 2013-05-01 11:31 ` Catalin Marinas 2013-04-30 16:30 ` [RFC PATCH 6/9] ARM64: mm: Restore memblock limit when map_mem finished Steve Capper 2013-04-30 16:30 ` [RFC PATCH 7/9] ARM64: mm: HugeTLB support Steve Capper 2013-04-30 16:30 ` Steve Capper 2013-05-01 11:42 ` Will Deacon 2013-05-01 11:42 ` Will Deacon 2013-05-01 13:04 ` Steve Capper 2013-05-01 16:21 ` Catalin Marinas 2013-05-01 16:21 ` Catalin Marinas 2013-04-30 16:30 ` Steve Capper [this message] 2013-04-30 16:30 ` [RFC PATCH 8/9] ARM64: mm: Introduce MAX_ZONE_ORDER for 64K and THP Steve Capper 2013-05-02 10:00 ` Catalin Marinas 2013-05-02 10:00 ` Catalin Marinas 2013-05-02 10:05 ` Steve Capper 2013-05-02 10:05 ` Steve Capper 2013-04-30 16:30 ` [RFC PATCH 9/9] ARM64: mm: THP support Steve Capper 2013-05-01 14:16 ` Steve Capper 2013-05-01 14:16 ` Steve Capper
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1367339448-21727-9-git-send-email-steve.capper@linaro.org \ --to=steve.capper@linaro.org \ --cc=catalin.marinas@arm.com \ --cc=kenchen@google.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-mm@kvack.org \ --cc=mgorman@suse.de \ --cc=mhocko@suse.cz \ --cc=will.deacon@arm.com \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).