On Mon, 5 Dec 2022 22:03:27 +0800 Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> wrote:mm/madvise.c:287: walk_page_range(vma->vm_mm, start, end, &swapin_walk_ops, vma);
When handle MADV_WILLNEED in madvise(), the soflockup may be occurredI wonder if this would be better in walk_pmd_range(), to address other
in swapin_walk_pmd_entry() if swapin lots of memory on slow device,
add a cond_resched() into it to avoid the possible softlockup.
...
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -226,6 +226,7 @@ static int swapin_walk_pmd_entry(pmd_t *pmd, unsigned long start,
put_page(page);
}
swap_read_unplug(splug);
+ cond_resched();
return 0;
}
very large walk attempts.
.