aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2013-06-05 20:14:02 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-06-20 02:55:07 -0400
commit6b0b50b0617fad5f2af3b928596a25f7de8dbf50 (patch)
treeaf777bf2041da281fff0ecf9503ed421ee8591ec /arch/sparc
parent8663890a9e9278623d20c67aa9fbeeb31ff3be97 (diff)
mm/THP: add pmd args to pgtable deposit and withdraw APIs
This will be later used by powerpc THP support. In powerpc we want to use pgtable for storing the hash index values. So instead of adding them to mm_context list, we would like to store them in the second half of pmd Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Reviewed-by: Andrea Arcangeli <aarcange@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/include/asm/pgtable_64.h5
-rw-r--r--arch/sparc/mm/tlb.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h
index 7619f2f792af..d22b92d67844 100644
--- a/arch/sparc/include/asm/pgtable_64.h
+++ b/arch/sparc/include/asm/pgtable_64.h
@@ -853,10 +853,11 @@ extern void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
853 pmd_t *pmd); 853 pmd_t *pmd);
854 854
855#define __HAVE_ARCH_PGTABLE_DEPOSIT 855#define __HAVE_ARCH_PGTABLE_DEPOSIT
856extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pgtable_t pgtable); 856extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
857 pgtable_t pgtable);
857 858
858#define __HAVE_ARCH_PGTABLE_WITHDRAW 859#define __HAVE_ARCH_PGTABLE_WITHDRAW
859extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm); 860extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
860#endif 861#endif
861 862
862/* Encode and de-code a swap entry */ 863/* Encode and de-code a swap entry */
diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c
index 83d89bcb44af..f828dd33551c 100644
--- a/arch/sparc/mm/tlb.c
+++ b/arch/sparc/mm/tlb.c
@@ -188,7 +188,8 @@ void set_pmd_at(struct mm_struct *mm, unsigned long addr,
188 } 188 }
189} 189}
190 190
191void pgtable_trans_huge_deposit(struct mm_struct *mm, pgtable_t pgtable) 191void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
192 pgtable_t pgtable)
192{ 193{
193 struct list_head *lh = (struct list_head *) pgtable; 194 struct list_head *lh = (struct list_head *) pgtable;
194 195
@@ -202,7 +203,7 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pgtable_t pgtable)
202 mm->pmd_huge_pte = pgtable; 203 mm->pmd_huge_pte = pgtable;
203} 204}
204 205
205pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm) 206pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp)
206{ 207{
207 struct list_head *lh; 208 struct list_head *lh;
208 pgtable_t pgtable; 209 pgtable_t pgtable;