On Thu, Mar 03, 2016 at 01:50:58PM +0300, Kirill A. Shutemov wrote: > On Thu, Mar 03, 2016 at 04:41:52PM +0900, Naoya Horiguchi wrote: > > If one of callers of page migration starts to handle thp, memory management code > > start to see pmd migration entry, so we need to prepare for it before enabling. > > This patch changes various code point which checks the status of given pmds in > > order to prevent race between thp migration and the pmd-related works. > > > > Signed-off-by: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx> > > --- > > arch/x86/mm/gup.c | 3 +++ > > fs/proc/task_mmu.c | 25 +++++++++++++-------- > > mm/gup.c | 8 +++++++ > > mm/huge_memory.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++------ > > mm/memcontrol.c | 2 ++ > > mm/memory.c | 5 +++++ > > 6 files changed, 93 insertions(+), 16 deletions(-) > > > > diff --git v4.5-rc5-mmotm-2016-02-24-16-18/arch/x86/mm/gup.c v4.5-rc5-mmotm-2016-02-24-16-18_patched/arch/x86/mm/gup.c > > index f8d0b5e..34c3d43 100644 > > --- v4.5-rc5-mmotm-2016-02-24-16-18/arch/x86/mm/gup.c > > +++ v4.5-rc5-mmotm-2016-02-24-16-18_patched/arch/x86/mm/gup.c > > @@ -10,6 +10,7 @@ > > #include <linux/highmem.h> > > #include <linux/swap.h> > > #include <linux/memremap.h> > > +#include <linux/swapops.h> > > > > #include <asm/pgtable.h> > > > > @@ -210,6 +211,8 @@ static int gup_pmd_range(pud_t pud, unsigned long addr, unsigned long end, > > if (pmd_none(pmd)) > > return 0; > > if (unlikely(pmd_large(pmd) || !pmd_present(pmd))) { > > + if (unlikely(is_pmd_migration_entry(pmd))) > > + return 0; > > Hm. I've expected to see bunch of pmd_none() to pmd_present() conversions. > That's seems a right way guard the code. Otherwise we wound need even more > checks once PMD-level swap is implemented. Yes, I agree. I'll try some for this pmd_none/pmd_present issue. Thanks, Naoya > > I think we need to check for migration entires only if we have something > to do with migration. In all other cases pmd_present() should be enough to > bail out. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>