summaryrefslogtreecommitdiffstats
path: root/include/linux/hugetlb.h
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2017-07-06 18:38:56 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-07-06 19:24:33 -0400
commit4dc71451a2078efcad2f66bd6ef130d2296827b1 (patch)
tree42f0896ed2bc9e7e59a4943b1b50fde56fb73a6a /include/linux/hugetlb.h
parente22992923f741c951b830121655b58342fce202e (diff)
mm/follow_page_mask: add support for hugepage directory entry
Architectures like ppc64 supports hugepage size that is not mapped to any of of the page table levels. Instead they add an alternate page table entry format called hugepage directory (hugepd). hugepd indicates that the page table entry maps to a set of hugetlb pages. Add support for this in generic follow_page_mask code. We already support this format in the generic gup code. The default implementation prints warning and returns NULL. We will add ppc64 support in later patches Link: http://lkml.kernel.org/r/1494926612-23928-7-git-send-email-aneesh.kumar@linux.vnet.ibm.com Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Mike Kravetz <kravetz@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/hugetlb.h')
-rw-r--r--include/linux/hugetlb.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index f01427c79947..c92a1f0c7240 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -141,6 +141,9 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr);
141int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep); 141int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep);
142struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address, 142struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address,
143 int write); 143 int write);
144struct page *follow_huge_pd(struct vm_area_struct *vma,
145 unsigned long address, hugepd_t hpd,
146 int flags, int pdshift);
144struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, 147struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address,
145 pmd_t *pmd, int flags); 148 pmd_t *pmd, int flags);
146struct page *follow_huge_pud(struct mm_struct *mm, unsigned long address, 149struct page *follow_huge_pud(struct mm_struct *mm, unsigned long address,
@@ -175,6 +178,7 @@ static inline void hugetlb_report_meminfo(struct seq_file *m)
175static inline void hugetlb_show_meminfo(void) 178static inline void hugetlb_show_meminfo(void)
176{ 179{
177} 180}
181#define follow_huge_pd(vma, addr, hpd, flags, pdshift) NULL
178#define follow_huge_pmd(mm, addr, pmd, flags) NULL 182#define follow_huge_pmd(mm, addr, pmd, flags) NULL
179#define follow_huge_pud(mm, addr, pud, flags) NULL 183#define follow_huge_pud(mm, addr, pud, flags) NULL
180#define follow_huge_pgd(mm, addr, pgd, flags) NULL 184#define follow_huge_pgd(mm, addr, pgd, flags) NULL