diff options
author | Zhang Zhen <zhenzhang.zhang@huawei.com> | 2015-06-24 19:56:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-06-24 20:49:41 -0400 |
commit | e81f2d22370f8231cb7f13f454bcc8c0eb4e23f2 (patch) | |
tree | 758140f614ebc396e160f858fc37ebddc7475f32 | |
parent | 36f881883c57941bb32d25cea6524f9612ab5a2c (diff) |
mm/hugetlb: reduce arch dependent code about huge_pmd_unshare
Currently we have many duplicates in definitions of huge_pmd_unshare. In
all architectures this function just returns 0 when
CONFIG_ARCH_WANT_HUGE_PMD_SHARE is N.
This patch puts the default implementation in mm/hugetlb.c and lets these
architectures use the common code.
Signed-off-by: Zhang Zhen <zhenzhang.zhang@huawei.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Chris Metcalf <cmetcalf@ezchip.com>
Cc: David Rientjes <rientjes@google.com>
Cc: James Yang <James.Yang@freescale.com>
Cc: Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | arch/arm/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | arch/arm64/mm/hugetlbpage.c | 7 | ||||
-rw-r--r-- | arch/ia64/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | arch/metag/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | arch/mips/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | arch/powerpc/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | arch/s390/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | arch/sh/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | arch/sparc/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | arch/tile/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | mm/hugetlb.c | 5 |
11 files changed, 5 insertions, 52 deletions
diff --git a/arch/arm/mm/hugetlbpage.c b/arch/arm/mm/hugetlbpage.c index c72412415093..fcafb521f14e 100644 --- a/arch/arm/mm/hugetlbpage.c +++ b/arch/arm/mm/hugetlbpage.c | |||
@@ -41,11 +41,6 @@ int pud_huge(pud_t pud) | |||
41 | return 0; | 41 | return 0; |
42 | } | 42 | } |
43 | 43 | ||
44 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
45 | { | ||
46 | return 0; | ||
47 | } | ||
48 | |||
49 | int pmd_huge(pmd_t pmd) | 44 | int pmd_huge(pmd_t pmd) |
50 | { | 45 | { |
51 | return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT); | 46 | return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT); |
diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index 2de9d2e59d96..cccc4af87a03 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c | |||
@@ -31,13 +31,6 @@ | |||
31 | #include <asm/tlbflush.h> | 31 | #include <asm/tlbflush.h> |
32 | #include <asm/pgalloc.h> | 32 | #include <asm/pgalloc.h> |
33 | 33 | ||
34 | #ifndef CONFIG_ARCH_WANT_HUGE_PMD_SHARE | ||
35 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
36 | { | ||
37 | return 0; | ||
38 | } | ||
39 | #endif | ||
40 | |||
41 | int pmd_huge(pmd_t pmd) | 34 | int pmd_huge(pmd_t pmd) |
42 | { | 35 | { |
43 | return !(pmd_val(pmd) & PMD_TABLE_BIT); | 36 | return !(pmd_val(pmd) & PMD_TABLE_BIT); |
diff --git a/arch/ia64/mm/hugetlbpage.c b/arch/ia64/mm/hugetlbpage.c index 52b7604b5215..f50d4b3f501a 100644 --- a/arch/ia64/mm/hugetlbpage.c +++ b/arch/ia64/mm/hugetlbpage.c | |||
@@ -65,11 +65,6 @@ huge_pte_offset (struct mm_struct *mm, unsigned long addr) | |||
65 | return pte; | 65 | return pte; |
66 | } | 66 | } |
67 | 67 | ||
68 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
69 | { | ||
70 | return 0; | ||
71 | } | ||
72 | |||
73 | #define mk_pte_huge(entry) { pte_val(entry) |= _PAGE_P; } | 68 | #define mk_pte_huge(entry) { pte_val(entry) |= _PAGE_P; } |
74 | 69 | ||
75 | /* | 70 | /* |
diff --git a/arch/metag/mm/hugetlbpage.c b/arch/metag/mm/hugetlbpage.c index 7ca80ac42ed5..53f0f6c47027 100644 --- a/arch/metag/mm/hugetlbpage.c +++ b/arch/metag/mm/hugetlbpage.c | |||
@@ -89,11 +89,6 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) | |||
89 | return pte; | 89 | return pte; |
90 | } | 90 | } |
91 | 91 | ||
92 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
93 | { | ||
94 | return 0; | ||
95 | } | ||
96 | |||
97 | int pmd_huge(pmd_t pmd) | 92 | int pmd_huge(pmd_t pmd) |
98 | { | 93 | { |
99 | return pmd_page_shift(pmd) > PAGE_SHIFT; | 94 | return pmd_page_shift(pmd) > PAGE_SHIFT; |
diff --git a/arch/mips/mm/hugetlbpage.c b/arch/mips/mm/hugetlbpage.c index 06e0f421b41b..74aa6f62468f 100644 --- a/arch/mips/mm/hugetlbpage.c +++ b/arch/mips/mm/hugetlbpage.c | |||
@@ -51,11 +51,6 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) | |||
51 | return (pte_t *) pmd; | 51 | return (pte_t *) pmd; |
52 | } | 52 | } |
53 | 53 | ||
54 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
55 | { | ||
56 | return 0; | ||
57 | } | ||
58 | |||
59 | /* | 54 | /* |
60 | * This function checks for proper alignment of input addr and len parameters. | 55 | * This function checks for proper alignment of input addr and len parameters. |
61 | */ | 56 | */ |
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c index 3385e3d0506e..38bd5d998c81 100644 --- a/arch/powerpc/mm/hugetlbpage.c +++ b/arch/powerpc/mm/hugetlbpage.c | |||
@@ -439,11 +439,6 @@ int alloc_bootmem_huge_page(struct hstate *hstate) | |||
439 | } | 439 | } |
440 | #endif | 440 | #endif |
441 | 441 | ||
442 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
443 | { | ||
444 | return 0; | ||
445 | } | ||
446 | |||
447 | #ifdef CONFIG_PPC_FSL_BOOK3E | 442 | #ifdef CONFIG_PPC_FSL_BOOK3E |
448 | #define HUGEPD_FREELIST_SIZE \ | 443 | #define HUGEPD_FREELIST_SIZE \ |
449 | ((PAGE_SIZE - sizeof(struct hugepd_freelist)) / sizeof(pte_t)) | 444 | ((PAGE_SIZE - sizeof(struct hugepd_freelist)) / sizeof(pte_t)) |
diff --git a/arch/s390/mm/hugetlbpage.c b/arch/s390/mm/hugetlbpage.c index e617e74b7be2..c3f8e3df92ff 100644 --- a/arch/s390/mm/hugetlbpage.c +++ b/arch/s390/mm/hugetlbpage.c | |||
@@ -193,11 +193,6 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) | |||
193 | return (pte_t *) pmdp; | 193 | return (pte_t *) pmdp; |
194 | } | 194 | } |
195 | 195 | ||
196 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
197 | { | ||
198 | return 0; | ||
199 | } | ||
200 | |||
201 | int pmd_huge(pmd_t pmd) | 196 | int pmd_huge(pmd_t pmd) |
202 | { | 197 | { |
203 | if (!MACHINE_HAS_HPAGE) | 198 | if (!MACHINE_HAS_HPAGE) |
diff --git a/arch/sh/mm/hugetlbpage.c b/arch/sh/mm/hugetlbpage.c index 534bc978af8a..6385f60209b6 100644 --- a/arch/sh/mm/hugetlbpage.c +++ b/arch/sh/mm/hugetlbpage.c | |||
@@ -62,11 +62,6 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) | |||
62 | return pte; | 62 | return pte; |
63 | } | 63 | } |
64 | 64 | ||
65 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
66 | { | ||
67 | return 0; | ||
68 | } | ||
69 | |||
70 | int pmd_huge(pmd_t pmd) | 65 | int pmd_huge(pmd_t pmd) |
71 | { | 66 | { |
72 | return 0; | 67 | return 0; |
diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c index 4242eab12e10..131eaf4ad7f5 100644 --- a/arch/sparc/mm/hugetlbpage.c +++ b/arch/sparc/mm/hugetlbpage.c | |||
@@ -172,11 +172,6 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) | |||
172 | return pte; | 172 | return pte; |
173 | } | 173 | } |
174 | 174 | ||
175 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
176 | { | ||
177 | return 0; | ||
178 | } | ||
179 | |||
180 | void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, | 175 | void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, |
181 | pte_t *ptep, pte_t entry) | 176 | pte_t *ptep, pte_t entry) |
182 | { | 177 | { |
diff --git a/arch/tile/mm/hugetlbpage.c b/arch/tile/mm/hugetlbpage.c index 8416240c322c..c034dc3fe2d4 100644 --- a/arch/tile/mm/hugetlbpage.c +++ b/arch/tile/mm/hugetlbpage.c | |||
@@ -160,11 +160,6 @@ int pud_huge(pud_t pud) | |||
160 | return !!(pud_val(pud) & _PAGE_HUGE_PAGE); | 160 | return !!(pud_val(pud) & _PAGE_HUGE_PAGE); |
161 | } | 161 | } |
162 | 162 | ||
163 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
164 | { | ||
165 | return 0; | ||
166 | } | ||
167 | |||
168 | #ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA | 163 | #ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA |
169 | static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file, | 164 | static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file, |
170 | unsigned long addr, unsigned long len, | 165 | unsigned long addr, unsigned long len, |
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 271e4432734c..716465ae57aa 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -3789,6 +3789,11 @@ pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud) | |||
3789 | { | 3789 | { |
3790 | return NULL; | 3790 | return NULL; |
3791 | } | 3791 | } |
3792 | |||
3793 | int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) | ||
3794 | { | ||
3795 | return 0; | ||
3796 | } | ||
3792 | #define want_pmd_share() (0) | 3797 | #define want_pmd_share() (0) |
3793 | #endif /* CONFIG_ARCH_WANT_HUGE_PMD_SHARE */ | 3798 | #endif /* CONFIG_ARCH_WANT_HUGE_PMD_SHARE */ |
3794 | 3799 | ||