From: xu xin <xu.xin16@xxxxxxxxxx> The benefits of doing this are obvious because using madvise in user code is the only current way to enable KSM, which is inconvenient for those compiled app without marking MERGEABLE wanting to enable KSM. Since we already have the syscall of process_madvise(), then reusing the interface to allow external KSM hints is more acceptable [1]. Although this patch was released by Oleksandr Natalenko, but it was unfortunately terminated without any conclusions because there was debate on whether it should use signal_pending() to check the target task besides the task of current() when calling unmerge_ksm_pages of other task [2]. I think it's unneeded to check the target task. For example, when we set the klob /sys/kernel/mm/ksm/run from 1 to 2, unmerge_and_remove_all_rmap_items() doesn't use signal_pending() to check all other target tasks either. I hope this patch can get attention again. [1] https://lore.kernel.org/lkml/YoOrdh85+AqJH8w1@xxxxxxxxxxxxxx/ [2] https://lore.kernel.org/lkml/2a66abd8-4103-f11b-06d1-07762667eee6@xxxxxxx/ Signed-off-by: Oleksandr Natalenko <oleksandr@xxxxxxxxxx> Signed-off-by: xu xin <xu.xin16@xxxxxxxxxx> --- mm/madvise.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/madvise.c b/mm/madvise.c index 851fa4e134bc..df915531ad9f 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -1173,6 +1173,10 @@ process_madvise_behavior_valid(int behavior) case MADV_COLD: case MADV_PAGEOUT: case MADV_WILLNEED: +#ifdef CONFIG_KSM + case MADV_MERGEABLE: + case MADV_UNMERGEABLE: +#endif return true; default: return false; -- 2.25.1