diff options
Diffstat (limited to 'mm/pgtable-generic.c')
-rw-r--r-- | mm/pgtable-generic.c | 24 |
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); } |