Hello, Andreas Sorry for long delay. I was on vacation. On Fri, Dec 16, 2016 at 03:16:20PM +0100, Andreas Schwab wrote: > On Dez 16 2016, Minchan Kim <minchan@xxxxxxxxxx> wrote: > > > Below helps? > > > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > > index e10a4fe..dc37c9a 100644 > > --- a/mm/huge_memory.c > > +++ b/mm/huge_memory.c > > @@ -1611,6 +1611,7 @@ int madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, > > tlb->fullmm); > > orig_pmd = pmd_mkold(orig_pmd); > > orig_pmd = pmd_mkclean(orig_pmd); > > + orig_pmd = pmd_wrprotect(orig_pmd); > > > > set_pmd_at(mm, addr, pmd, orig_pmd); > > tlb_remove_pmd_tlb_entry(tlb, pmd, addr); > > Thanks, this fixes the issue (tested with 4.9). It was a quick hack to know what exact problem is there and your confirming helped a lot to understand the problem clear. More right approach is to support pmd dirty handling in general page fault handler rather than tweaking MADV_FREE. I just sent a new patch with Ccing you. Could you test it, please? Thanks! -- 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>