From: Anshuman Khandual <anshuman.khandual@arm.com> To: linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: suzuki.poulose@arm.com, punit.agrawal@arm.com, will.deacon@arm.com, Steven.Price@arm.com, catalin.marinas@arm.com, mhocko@kernel.org, mike.kravetz@oracle.com, n-horiguchi@ah.jp.nec.com Subject: [PATCH 4/4] arm64/mm: Enable HugeTLB migration for contiguous bit HugeTLB pages Date: Tue, 2 Oct 2018 17:45:31 +0530 [thread overview] Message-ID: <1538482531-26883-5-git-send-email-anshuman.khandual@arm.com> (raw) In-Reply-To: <1538482531-26883-1-git-send-email-anshuman.khandual@arm.com> Let arm64 subscribe to the previously added framework in which architecture can inform whether a given huge page size is supported for migration. This just overrides the default function arch_hugetlb_migration_supported() and enables migration for all possible HugeTLB page sizes on arm64. With this, HugeTLB migration support on arm64 now covers all possible HugeTLB options. CONT PTE PMD CONT PMD PUD -------- --- -------- --- 4K: 64K 2M 32M 1G 16K: 2M 32M 1G 64K: 2M 512M 16G Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- arch/arm64/include/asm/hugetlb.h | 5 +++++ arch/arm64/mm/hugetlbpage.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h index e73f685..656f70e 100644 --- a/arch/arm64/include/asm/hugetlb.h +++ b/arch/arm64/include/asm/hugetlb.h @@ -20,6 +20,11 @@ #include <asm/page.h> +#ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION +#define arch_hugetlb_migration_supported arch_hugetlb_migration_supported +extern bool arch_hugetlb_migration_supported(struct hstate *h); +#endif + static inline pte_t huge_ptep_get(pte_t *ptep) { return READ_ONCE(*ptep); diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index 4eafd9f..28f4795 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c @@ -27,6 +27,26 @@ #include <asm/tlbflush.h> #include <asm/pgalloc.h> +#ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION +bool arch_hugetlb_migration_supported(struct hstate *h) +{ + size_t pagesize = huge_page_size(h); + + switch (pagesize) { +#ifdef CONFIG_ARM64_4K_PAGES + case PUD_SIZE: +#endif + case PMD_SIZE: + case CONT_PMD_SIZE: + case CONT_PTE_SIZE: + return true; + } + pr_warn("%s: unrecognized huge page size 0x%lx\n", + __func__, pagesize); + return false; +} +#endif + int pmd_huge(pmd_t pmd) { return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT); -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: anshuman.khandual@arm.com (Anshuman Khandual) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 4/4] arm64/mm: Enable HugeTLB migration for contiguous bit HugeTLB pages Date: Tue, 2 Oct 2018 17:45:31 +0530 [thread overview] Message-ID: <1538482531-26883-5-git-send-email-anshuman.khandual@arm.com> (raw) In-Reply-To: <1538482531-26883-1-git-send-email-anshuman.khandual@arm.com> Let arm64 subscribe to the previously added framework in which architecture can inform whether a given huge page size is supported for migration. This just overrides the default function arch_hugetlb_migration_supported() and enables migration for all possible HugeTLB page sizes on arm64. With this, HugeTLB migration support on arm64 now covers all possible HugeTLB options. CONT PTE PMD CONT PMD PUD -------- --- -------- --- 4K: 64K 2M 32M 1G 16K: 2M 32M 1G 64K: 2M 512M 16G Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- arch/arm64/include/asm/hugetlb.h | 5 +++++ arch/arm64/mm/hugetlbpage.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h index e73f685..656f70e 100644 --- a/arch/arm64/include/asm/hugetlb.h +++ b/arch/arm64/include/asm/hugetlb.h @@ -20,6 +20,11 @@ #include <asm/page.h> +#ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION +#define arch_hugetlb_migration_supported arch_hugetlb_migration_supported +extern bool arch_hugetlb_migration_supported(struct hstate *h); +#endif + static inline pte_t huge_ptep_get(pte_t *ptep) { return READ_ONCE(*ptep); diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index 4eafd9f..28f4795 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c @@ -27,6 +27,26 @@ #include <asm/tlbflush.h> #include <asm/pgalloc.h> +#ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION +bool arch_hugetlb_migration_supported(struct hstate *h) +{ + size_t pagesize = huge_page_size(h); + + switch (pagesize) { +#ifdef CONFIG_ARM64_4K_PAGES + case PUD_SIZE: +#endif + case PMD_SIZE: + case CONT_PMD_SIZE: + case CONT_PTE_SIZE: + return true; + } + pr_warn("%s: unrecognized huge page size 0x%lx\n", + __func__, pagesize); + return false; +} +#endif + int pmd_huge(pmd_t pmd) { return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT); -- 2.7.4
next prev parent reply other threads:[~2018-10-02 12:15 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-10-02 12:15 [PATCH 0/4] arm64/mm: Enable HugeTLB migration Anshuman Khandual 2018-10-02 12:15 ` Anshuman Khandual 2018-10-02 12:15 ` [PATCH 1/4] mm/hugetlb: Enable PUD level huge page migration Anshuman Khandual 2018-10-02 12:15 ` Anshuman Khandual 2018-10-02 12:38 ` Suzuki K Poulose 2018-10-02 12:38 ` Suzuki K Poulose 2018-10-02 12:56 ` Anshuman Khandual 2018-10-02 12:56 ` Anshuman Khandual 2018-10-02 12:56 ` Anshuman Khandual 2018-10-03 10:22 ` Suzuki K Poulose 2018-10-03 10:22 ` Suzuki K Poulose 2018-10-03 10:22 ` Suzuki K Poulose 2018-10-03 11:10 ` Anshuman Khandual 2018-10-03 11:10 ` Anshuman Khandual 2018-10-03 11:10 ` Anshuman Khandual 2018-10-03 11:17 ` Suzuki K Poulose 2018-10-03 11:17 ` Suzuki K Poulose 2018-10-03 11:17 ` Suzuki K Poulose 2018-10-03 11:27 ` Michal Hocko 2018-10-03 11:27 ` Michal Hocko 2018-10-02 12:39 ` Michal Hocko 2018-10-02 12:39 ` Michal Hocko 2018-10-03 2:16 ` Anshuman Khandual 2018-10-03 2:16 ` Anshuman Khandual 2018-10-03 6:58 ` Michal Hocko 2018-10-03 6:58 ` Michal Hocko 2018-10-03 9:58 ` Anshuman Khandual 2018-10-03 9:58 ` Anshuman Khandual 2018-10-03 10:59 ` Michal Hocko 2018-10-03 10:59 ` Michal Hocko 2018-10-03 11:37 ` Anshuman Khandual 2018-10-03 11:37 ` Anshuman Khandual 2018-10-03 11:48 ` Michal Hocko 2018-10-03 11:48 ` Michal Hocko 2018-10-03 13:06 ` Anshuman Khandual 2018-10-03 13:06 ` Anshuman Khandual 2018-10-03 13:36 ` Michal Hocko 2018-10-03 13:36 ` Michal Hocko 2018-10-05 7:34 ` Anshuman Khandual 2018-10-05 7:34 ` Anshuman Khandual 2018-10-09 14:14 ` Michal Hocko 2018-10-09 14:14 ` Michal Hocko 2018-10-10 3:09 ` Anshuman Khandual 2018-10-10 3:09 ` Anshuman Khandual 2018-10-10 9:39 ` Michal Hocko 2018-10-10 9:39 ` Michal Hocko 2018-10-11 3:16 ` Anshuman Khandual 2018-10-11 3:16 ` Anshuman Khandual 2018-10-02 12:15 ` [PATCH 2/4] mm/hugetlb: Enable arch specific huge page size support for migration Anshuman Khandual 2018-10-02 12:15 ` Anshuman Khandual 2018-10-02 12:15 ` [PATCH 3/4] arm64/mm: Enable HugeTLB migration Anshuman Khandual 2018-10-02 12:15 ` Anshuman Khandual 2018-10-02 12:15 ` Anshuman Khandual [this message] 2018-10-02 12:15 ` [PATCH 4/4] arm64/mm: Enable HugeTLB migration for contiguous bit HugeTLB pages Anshuman Khandual
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=1538482531-26883-5-git-send-email-anshuman.khandual@arm.com \ --to=anshuman.khandual@arm.com \ --cc=Steven.Price@arm.com \ --cc=catalin.marinas@arm.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mhocko@kernel.org \ --cc=mike.kravetz@oracle.com \ --cc=n-horiguchi@ah.jp.nec.com \ --cc=punit.agrawal@arm.com \ --cc=suzuki.poulose@arm.com \ --cc=will.deacon@arm.com \ /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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.