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 >