summaryrefslogtreecommitdiff
path: root/mm/pgtable-generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/pgtable-generic.c')
-rw-r--r--mm/pgtable-generic.c24
1 files changed, 10 insertions, 14 deletions
diff --git a/mm/pgtable-generic.c b/mm/pgtable-generic.c
index a8b919925934..3929a40bd6c0 100644
--- a/mm/pgtable-generic.c
+++ b/mm/pgtable-generic.c
@@ -110,10 +110,9 @@ int pmdp_clear_flush_young(struct vm_area_struct *vma,
pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address,
pte_t *ptep)
{
- struct mm_struct *mm = (vma)->vm_mm;
pte_t pte;
- pte = ptep_get_and_clear(mm, address, ptep);
- if (pte_accessible(mm, pte))
+ pte = ptep_get_and_clear((vma)->vm_mm, address, ptep);
+ if (pte_accessible(pte))
flush_tlb_page(vma, address);
return pte;
}
@@ -152,14 +151,14 @@ void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address,
void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
pgtable_t pgtable)
{
- assert_spin_locked(pmd_lockptr(mm, pmdp));
+ assert_spin_locked(&mm->page_table_lock);
/* FIFO */
- if (!pmd_huge_pte(mm, pmdp))
+ if (!mm->pmd_huge_pte)
INIT_LIST_HEAD(&pgtable->lru);
else
- list_add(&pgtable->lru, &pmd_huge_pte(mm, pmdp)->lru);
- pmd_huge_pte(mm, pmdp) = pgtable;
+ list_add(&pgtable->lru, &mm->pmd_huge_pte->lru);
+ mm->pmd_huge_pte = pgtable;
}
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
#endif
@@ -171,14 +170,14 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp)
{
pgtable_t pgtable;
- assert_spin_locked(pmd_lockptr(mm, pmdp));
+ assert_spin_locked(&mm->page_table_lock);
/* FIFO */
- pgtable = pmd_huge_pte(mm, pmdp);
+ pgtable = mm->pmd_huge_pte;
if (list_empty(&pgtable->lru))
- pmd_huge_pte(mm, pmdp) = NULL;
+ mm->pmd_huge_pte = NULL;
else {
- pmd_huge_pte(mm, pmdp) = list_entry(pgtable->lru.next,
+ mm->pmd_huge_pte = list_entry(pgtable->lru.next,
struct page, lru);
list_del(&pgtable->lru);
}
@@ -192,9 +191,6 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp)
void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
pmd_t *pmdp)
{
- pmd_t entry = *pmdp;
- if (pmd_numa(entry))
- entry = pmd_mknonnuma(entry);
set_pmd_at(vma->vm_mm, address, pmdp, pmd_mknotpresent(*pmdp));
flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
}