|
@@ -1036,7 +1036,7 @@ static int do_huge_pmd_wp_page_fallback(struct mm_struct *mm,
|
|
|
goto out_free_pages;
|
|
|
VM_BUG_ON_PAGE(!PageHead(page), page);
|
|
|
|
|
|
- pmdp_clear_flush(vma, haddr, pmd);
|
|
|
+ pmdp_clear_flush_notify(vma, haddr, pmd);
|
|
|
/* leave pmd empty until pte is filled */
|
|
|
|
|
|
pgtable = pgtable_trans_huge_withdraw(mm, pmd);
|
|
@@ -1179,7 +1179,7 @@ alloc:
|
|
|
pmd_t entry;
|
|
|
entry = mk_huge_pmd(new_page, vma->vm_page_prot);
|
|
|
entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
|
|
|
- pmdp_clear_flush(vma, haddr, pmd);
|
|
|
+ pmdp_clear_flush_notify(vma, haddr, pmd);
|
|
|
page_add_new_anon_rmap(new_page, vma, haddr);
|
|
|
mem_cgroup_commit_charge(new_page, memcg, false);
|
|
|
lru_cache_add_active_or_unevictable(new_page, vma);
|
|
@@ -1512,7 +1512,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
|
|
|
pmd_t entry;
|
|
|
ret = 1;
|
|
|
if (!prot_numa) {
|
|
|
- entry = pmdp_get_and_clear(mm, addr, pmd);
|
|
|
+ entry = pmdp_get_and_clear_notify(mm, addr, pmd);
|
|
|
if (pmd_numa(entry))
|
|
|
entry = pmd_mknonnuma(entry);
|
|
|
entry = pmd_modify(entry, newprot);
|
|
@@ -1644,6 +1644,7 @@ static int __split_huge_page_splitting(struct page *page,
|
|
|
* serialize against split_huge_page*.
|
|
|
*/
|
|
|
pmdp_splitting_flush(vma, address, pmd);
|
|
|
+
|
|
|
ret = 1;
|
|
|
spin_unlock(ptl);
|
|
|
}
|
|
@@ -2834,7 +2835,7 @@ static void __split_huge_zero_page_pmd(struct vm_area_struct *vma,
|
|
|
pmd_t _pmd;
|
|
|
int i;
|
|
|
|
|
|
- pmdp_clear_flush(vma, haddr, pmd);
|
|
|
+ pmdp_clear_flush_notify(vma, haddr, pmd);
|
|
|
/* leave pmd empty until pte is filled */
|
|
|
|
|
|
pgtable = pgtable_trans_huge_withdraw(mm, pmd);
|