Commit 03aa8e4f authored by Kefeng Wang's avatar Kefeng Wang Committed by Andrew Morton
Browse files

mm: mprotect: always skip dma pinned folio in prot_numa_skip()

Patch series "mm: some optimizations for prot numa", v5.


This patch (of 4):

If the folio (even not CoW folio) is dma pinned, it can't be migrated due
to the elevated reference count.  So always skip a pinned folio to avoid
wasting cycles when folios are migrated.

Link: https://lkml.kernel.org/r/20251023113737.3572790-1-wangkefeng.wang@huawei.com
Link: https://lkml.kernel.org/r/20251023113737.3572790-2-wangkefeng.wang@huawei.com


Signed-off-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Acked-by: default avatarZi Yan <ziy@nvidia.com>
Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
Reviewed-by: default avatarBarry Song <baohua@kernel.org>
Reviewed-by: default avatarDev Jain <dev.jain@arm.com>
Reviewed-by: default avatarLance Yang <lance.yang@linux.dev>
Reviewed-by: default avatarSidhartha Kumar <sidhartha.kumar@oracle.com>
Reviewed-by: default avatarLorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent d945667d
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -136,9 +136,12 @@ static bool prot_numa_skip(struct vm_area_struct *vma, unsigned long addr,
	if (folio_is_zone_device(folio) || folio_test_ksm(folio))
		goto skip;

	/* Also skip shared copy-on-write pages */
	if (is_cow_mapping(vma->vm_flags) &&
	    (folio_maybe_dma_pinned(folio) || folio_maybe_mapped_shared(folio)))
	/* Also skip shared copy-on-write folios */
	if (is_cow_mapping(vma->vm_flags) && folio_maybe_mapped_shared(folio))
		goto skip;

	/* Folios are pinned and can't be migrated */
	if (folio_maybe_dma_pinned(folio))
		goto skip;

	/*