summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhang Zhen <zhenzhang.zhang@huawei.com>2015-06-24 19:56:13 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-06-24 20:49:41 -0400
commite81f2d22370f8231cb7f13f454bcc8c0eb4e23f2 (patch)
tree758140f614ebc396e160f858fc37ebddc7475f32
parent36f881883c57941bb32d25cea6524f9612ab5a2c (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.c5
-rw-r--r--arch/arm64/mm/hugetlbpage.c7
-rw-r--r--arch/ia64/mm/hugetlbpage.c5
-rw-r--r--arch/metag/mm/hugetlbpage.c5
-rw-r--r--arch/mips/mm/hugetlbpage.c5
-rw-r--r--arch/powerpc/mm/hugetlbpage.c5
-rw-r--r--arch/s390/mm/hugetlbpage.c5
-rw-r--r--arch/sh/mm/hugetlbpage.c5
-rw-r--r--arch/sparc/mm/hugetlbpage.c5
-rw-r--r--arch/tile/mm/hugetlbpage.c5
-rw-r--r--mm/hugetlb.c5
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
44int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
45{
46 return 0;
47}
48
49int pmd_huge(pmd_t pmd) 44int 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
35int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
36{
37 return 0;
38}
39#endif
40
41int pmd_huge(pmd_t pmd) 34int 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
68int 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
92int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
93{
94 return 0;
95}
96
97int pmd_huge(pmd_t pmd) 92int 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
54int 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
442int 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
196int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
197{
198 return 0;
199}
200
201int pmd_huge(pmd_t pmd) 196int 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
65int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
66{
67 return 0;
68}
69
70int pmd_huge(pmd_t pmd) 65int 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
175int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
176{
177 return 0;
178}
179
180void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, 175void 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
163int 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
169static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file, 164static 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
3793int 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