VOLATILE imply the the pages in the range isn't working set any more so it's pointless that make them to THP/KSM. Cc: Rik van Riel <riel@xxxxxxxxxx> Cc: Hugh Dickins <hughd@xxxxxxxxxx> Cc: Andrea Arcangeli <aarcange@xxxxxxxxxx> Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> --- mm/huge_memory.c | 9 +++++++-- mm/ksm.c | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 40f17c3..5ddd00e 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1477,7 +1477,8 @@ out: return ret; } -#define VM_NO_THP (VM_SPECIAL|VM_MIXEDMAP|VM_HUGETLB|VM_SHARED|VM_MAYSHARE) +#define VM_NO_THP (VM_SPECIAL|VM_MIXEDMAP|VM_HUGETLB|\ + VM_SHARED|VM_MAYSHARE|VM_VOLATILE) int hugepage_madvise(struct vm_area_struct *vma, unsigned long *vm_flags, int advice) @@ -1641,6 +1642,8 @@ int khugepaged_enter_vma_merge(struct vm_area_struct *vma) * page fault if needed. */ return 0; + if (vma->vm_flags & VM_VOLATILE) + return 0; if (vma->vm_ops) /* khugepaged not yet working on file or special mappings */ return 0; @@ -1969,6 +1972,8 @@ static void collapse_huge_page(struct mm_struct *mm, goto out; if (is_vma_temporary_stack(vma)) goto out; + if (vma->vm_flags & VM_VOLATILE) + goto out; VM_BUG_ON(vma->vm_flags & VM_NO_THP); pgd = pgd_offset(mm, address); @@ -2196,7 +2201,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, if ((!(vma->vm_flags & VM_HUGEPAGE) && !khugepaged_always()) || - (vma->vm_flags & VM_NOHUGEPAGE)) { + (vma->vm_flags & (VM_NOHUGEPAGE|VM_VOLATILE))) { skip: progress++; continue; diff --git a/mm/ksm.c b/mm/ksm.c index ae539f0..2775f59 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -1486,7 +1486,8 @@ int ksm_madvise(struct vm_area_struct *vma, unsigned long start, */ if (*vm_flags & (VM_MERGEABLE | VM_SHARED | VM_MAYSHARE | VM_PFNMAP | VM_IO | VM_DONTEXPAND | - VM_HUGETLB | VM_NONLINEAR | VM_MIXEDMAP)) + VM_HUGETLB | VM_NONLINEAR | VM_MIXEDMAP | + VM_VOLATILE)) return 0; /* just ignore the advice */ #ifdef VM_SAO -- 1.7.9.5 -- 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>