Re: [PATCH v1 05/11] mm: thp: check pmd migration entry in common path
From: Naoya Horiguchi <nao.horiguchi@gmail.com>
Date: 2016-03-03 16:22:30
Also in:
lkml
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:quoted
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 <redacted> --- 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@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>