David Hildenbrand
2025-Jan-29 11:54 UTC
[PATCH v1 07/12] mm/page_vma_mapped: device-private entries are not migration entries
It's unclear why they would be considered migration entries; they are not. Likely we'll never really trigger that case in practice, because migration (including folio split) of a folio that has device-private entries is never started, as we would detect "additional references": device-private entries adjust the mapcount, but not the refcount. Fixes: b756a3b5e7ea ("mm: device exclusive memory access") Signed-off-by: David Hildenbrand <david at redhat.com> --- mm/page_vma_mapped.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c index 81839a9e74f1..32679be22d30 100644 --- a/mm/page_vma_mapped.c +++ b/mm/page_vma_mapped.c @@ -111,8 +111,7 @@ static bool check_pte(struct page_vma_mapped_walk *pvmw) return false; entry = pte_to_swp_entry(ptent); - if (!is_migration_entry(entry) && - !is_device_exclusive_entry(entry)) + if (!is_migration_entry(entry)) return false; pfn = swp_offset_pfn(entry); -- 2.48.1
Alistair Popple
2025-Jan-30 23:36 UTC
[PATCH v1 07/12] mm/page_vma_mapped: device-private entries are not migration entries
On Wed, Jan 29, 2025 at 12:54:05PM +0100, David Hildenbrand wrote:> It's unclear why they would be considered migration entries; they are > not.Yeah, I agree that doesn't seem right. I suspect I was initially modelling device exclusive entries similar to migration entries but obviously went too far. So thanks for fixing: Reviewed-by: Alistair Popple <apopple at nvidia.com>> Likely we'll never really trigger that case in practice, because > migration (including folio split) of a folio that has device-private > entries is never started, as we would detect "additional references": > device-private entries adjust the mapcount, but not the refcount. > > Fixes: b756a3b5e7ea ("mm: device exclusive memory access") > Signed-off-by: David Hildenbrand <david at redhat.com> > --- > mm/page_vma_mapped.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c > index 81839a9e74f1..32679be22d30 100644 > --- a/mm/page_vma_mapped.c > +++ b/mm/page_vma_mapped.c > @@ -111,8 +111,7 @@ static bool check_pte(struct page_vma_mapped_walk *pvmw) > return false; > entry = pte_to_swp_entry(ptent); > > - if (!is_migration_entry(entry) && > - !is_device_exclusive_entry(entry)) > + if (!is_migration_entry(entry)) > return false; > > pfn = swp_offset_pfn(entry); > -- > 2.48.1 >