Private node folios are managed by device drivers and should not be subjectto madvise cold/pageout/free operations that would interfere with the driver's memory management.
Extend the existing zone_device check to cover private nodes. Signed-off-by: Gregory Price <[email protected]> --- mm/madvise.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/madvise.c b/mm/madvise.c index b617b1be0f53..3aac105e840b 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -32,6 +32,7 @@ #include <linux/leafops.h> #include <linux/shmem_fs.h> #include <linux/mmu_notifier.h> +#include <linux/node_private.h> #include <asm/tlb.h> @@ -475,7 +476,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, continue; folio = vm_normal_folio(vma, addr, ptent); - if (!folio || folio_is_zone_device(folio)) + if (!folio || unlikely(folio_is_private_managed(folio))) continue; /* @@ -704,7 +705,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned long addr, } folio = vm_normal_folio(vma, addr, ptent); - if (!folio || folio_is_zone_device(folio)) + if (!folio || unlikely(folio_is_private_managed(folio))) continue; /* -- 2.53.0
