diff options
author | Steve Capper <steve.capper@linaro.org> | 2013-04-23 12:35:02 +0100 |
---|---|---|
committer | Steve Capper <steve.capper@linaro.org> | 2013-06-14 09:33:47 +0100 |
commit | 3212b535f200c85b5a67cbfaea18431da71b5c72 (patch) | |
tree | 4ae2cd05ea3fc8b7358806cb34fd2ab7b562fc40 /include/linux/hugetlb.h | |
parent | d683b96b072dc4680fc74964eca77e6a23d1fa6e (diff) | |
download | linux-stable-3212b535f200c85b5a67cbfaea18431da71b5c72.tar.gz linux-stable-3212b535f200c85b5a67cbfaea18431da71b5c72.tar.bz2 linux-stable-3212b535f200c85b5a67cbfaea18431da71b5c72.zip |
mm: hugetlb: Copy huge_pmd_share from x86 to mm.
Under x86, multiple puds can be made to reference the same bank of
huge pmds provided that they represent a full PUD_SIZE of shared
huge memory that is aligned to a PUD_SIZE boundary.
The code to share pmds does not require any architecture specific
knowledge other than the fact that pmds can be indexed, thus can
be beneficial to some other architectures.
This patch copies the huge pmd sharing (and unsharing) logic from
x86/ to mm/ and introduces a new config option to activate it:
CONFIG_ARCH_WANTS_HUGE_PMD_SHARE
Signed-off-by: Steve Capper <steve.capper@linaro.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'include/linux/hugetlb.h')
-rw-r--r-- | include/linux/hugetlb.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 6b4890fa57e7..981546ad231c 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -69,6 +69,10 @@ void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed); int dequeue_hwpoisoned_huge_page(struct page *page); void copy_huge_page(struct page *dst, struct page *src); +#ifdef CONFIG_ARCH_WANT_HUGE_PMD_SHARE +pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud); +#endif + extern unsigned long hugepages_treat_as_movable; extern const unsigned long hugetlb_zero, hugetlb_infinity; extern int sysctl_hugetlb_shm_group; |