Messages in this thread | | | From | "Hillf Danton" <> | Subject | Re: [PATCH v2 07/12] mm: thp: check pmd migration entry in common path | Date | Thu, 10 Nov 2016 17:08:07 +0800 |
| |
On Tuesday, November 08, 2016 7:32 AM Naoya Horiguchi wrote: > > @@ -1013,6 +1027,9 @@ int do_huge_pmd_wp_page(struct fault_env *fe, pmd_t orig_pmd) > if (unlikely(!pmd_same(*fe->pmd, orig_pmd))) > goto out_unlock; > > + if (unlikely(!pmd_present(orig_pmd))) > + goto out_unlock; > +
Can we encounter a migration entry after acquiring ptl ?
> page = pmd_page(orig_pmd); > VM_BUG_ON_PAGE(!PageCompound(page) || !PageHead(page), page); > /* [...] > @@ -3591,6 +3591,10 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, > int ret; > > barrier(); > + if (unlikely(is_pmd_migration_entry(orig_pmd))) { > + pmd_migration_entry_wait(mm, fe.pmd); > + return 0; > + } > if (pmd_trans_huge(orig_pmd) || pmd_devmap(orig_pmd)) { > if (pmd_protnone(orig_pmd) && vma_is_accessible(vma)) > return do_huge_pmd_numa_page(&fe, orig_pmd);
| |