From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f173.google.com (mail-ig0-f173.google.com [209.85.213.173]) by kanga.kvack.org (Postfix) with ESMTP id 2D5926B0257 for ; Wed, 9 Mar 2016 07:12:05 -0500 (EST) Received: by mail-ig0-f173.google.com with SMTP id ig19so76738484igb.0 for ; Wed, 09 Mar 2016 04:12:05 -0800 (PST) Received: from e23smtp06.au.ibm.com (e23smtp06.au.ibm.com. [202.81.31.148]) by mx.google.com with ESMTPS id r33si10352615ioi.132.2016.03.09.04.11.59 for (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 09 Mar 2016 04:12:00 -0800 (PST) Received: from localhost by e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 9 Mar 2016 22:11:56 +1000 Received: from d23relay06.au.ibm.com (d23relay06.au.ibm.com [9.185.63.219]) by d23dlp01.au.ibm.com (Postfix) with ESMTP id CFDA12CE805D for ; Wed, 9 Mar 2016 23:11:47 +1100 (EST) Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.234.96]) by d23relay06.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id u29CBbnv3146016 for ; Wed, 9 Mar 2016 23:11:47 +1100 Received: from d23av01.au.ibm.com (localhost [127.0.0.1]) by d23av01.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id u29CBC6U021393 for ; Wed, 9 Mar 2016 23:11:13 +1100 From: Anshuman Khandual Subject: [RFC 2/9] mm/hugetlb: Add follow_huge_pgd function Date: Wed, 9 Mar 2016 17:40:43 +0530 Message-Id: <1457525450-4262-2-git-send-email-khandual@linux.vnet.ibm.com> In-Reply-To: <1457525450-4262-1-git-send-email-khandual@linux.vnet.ibm.com> References: <1457525450-4262-1-git-send-email-khandual@linux.vnet.ibm.com> Sender: owner-linux-mm@kvack.org List-ID: To: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: hughd@google.com, kirill@shutemov.name, n-horiguchi@ah.jp.nec.com, akpm@linux-foundation.org, mgorman@techsingularity.net, aneesh.kumar@linux.vnet.ibm.com, mpe@ellerman.id.au This just adds 'follow_huge_pgd' function which is will be used later in this series to make 'follow_page_mask' function aware of PGD based huge page implementation. Signed-off-by: Anshuman Khandual --- include/linux/hugetlb.h | 3 +++ mm/hugetlb.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 7d953c2..71832e1 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -115,6 +115,8 @@ struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmd, int flags); struct page *follow_huge_pud(struct mm_struct *mm, unsigned long address, pud_t *pud, int flags); +struct page *follow_huge_pgd(struct mm_struct *mm, unsigned long address, + pgd_t *pgd, int flags); int pmd_huge(pmd_t pmd); int pud_huge(pud_t pmd); unsigned long hugetlb_change_protection(struct vm_area_struct *vma, @@ -143,6 +145,7 @@ static inline void hugetlb_show_meminfo(void) } #define follow_huge_pmd(mm, addr, pmd, flags) NULL #define follow_huge_pud(mm, addr, pud, flags) NULL +#define follow_huge_pgd(mm, addr, pgd, flags) NULL #define prepare_hugepage_range(file, addr, len) (-EINVAL) #define pmd_huge(x) 0 #define pud_huge(x) 0 diff --git a/mm/hugetlb.c b/mm/hugetlb.c index a478b7b..844c18f 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4353,6 +4353,16 @@ follow_huge_pud(struct mm_struct *mm, unsigned long address, return pte_page(*(pte_t *)pud) + ((address & ~PUD_MASK) >> PAGE_SHIFT); } +struct page * __weak +follow_huge_pgd(struct mm_struct *mm, unsigned long address, + pgd_t *pgd, int flags) +{ + if (flags & FOLL_GET) + return NULL; + + return pte_page(*(pte_t *)pgd) + ((address & ~PGDIR_MASK) >> PAGE_SHIFT); +} + #ifdef CONFIG_MEMORY_FAILURE /* -- 2.1.0 -- 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: email@kvack.org