aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
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/s390
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/s390')
-rw-r--r--arch/s390/include/asm/pgtable.h5
-rw-r--r--arch/s390/mm/pgtable.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index e8b6e5b8932c..2080dfeba64b 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -1370,10 +1370,11 @@ static inline pmd_t pmd_mkwrite(pmd_t pmd)
1370#ifdef CONFIG_TRANSPARENT_HUGEPAGE 1370#ifdef CONFIG_TRANSPARENT_HUGEPAGE
1371 1371
1372#define __HAVE_ARCH_PGTABLE_DEPOSIT 1372#define __HAVE_ARCH_PGTABLE_DEPOSIT
1373extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pgtable_t pgtable); 1373extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
1374 pgtable_t pgtable);
1374 1375
1375#define __HAVE_ARCH_PGTABLE_WITHDRAW 1376#define __HAVE_ARCH_PGTABLE_WITHDRAW
1376extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm); 1377extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
1377 1378
1378static inline int pmd_trans_splitting(pmd_t pmd) 1379static inline int pmd_trans_splitting(pmd_t pmd)
1379{ 1380{
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index a938b548f07e..1ccbffecc4d5 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -1117,7 +1117,8 @@ void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address,
1117 } 1117 }
1118} 1118}
1119 1119
1120void pgtable_trans_huge_deposit(struct mm_struct *mm, pgtable_t pgtable) 1120void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
1121 pgtable_t pgtable)
1121{ 1122{
1122 struct list_head *lh = (struct list_head *) pgtable; 1123 struct list_head *lh = (struct list_head *) pgtable;
1123 1124
@@ -1131,7 +1132,7 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pgtable_t pgtable)
1131 mm->pmd_huge_pte = pgtable; 1132 mm->pmd_huge_pte = pgtable;
1132} 1133}
1133 1134
1134pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm) 1135pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp)
1135{ 1136{
1136 struct list_head *lh; 1137 struct list_head *lh;
1137 pgtable_t pgtable; 1138 pgtable_t pgtable;