git: b01455592c22 - main - amd_idpgtbl: use iterator instead of vm_page_next

From: Doug Moore <dougm_at_FreeBSD.org>
Date: Fri, 18 Apr 2025 17:24:25 UTC
The branch main has been updated by dougm:

URL: https://cgit.FreeBSD.org/src/commit/?id=b01455592c22515429a030f47173acd40eb3e218

commit b01455592c22515429a030f47173acd40eb3e218
Author:     Doug Moore <dougm@FreeBSD.org>
AuthorDate: 2025-04-18 17:20:06 +0000
Commit:     Doug Moore <dougm@FreeBSD.org>
CommitDate: 2025-04-18 17:24:04 +0000

    amd_idpgtbl: use iterator instead of vm_page_next
    
    Use VM_RADIX_FORALL instead of vm_page_next in a loop in
    amdiommu_domain_free_pgtbl.
    
    Reviewed by:    kib
    Differential Revision:  https://reviews.freebsd.org/D49890
---
 sys/x86/iommu/amd_idpgtbl.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/sys/x86/iommu/amd_idpgtbl.c b/sys/x86/iommu/amd_idpgtbl.c
index 7809a4d57926..4ed73675bd41 100644
--- a/sys/x86/iommu/amd_idpgtbl.c
+++ b/sys/x86/iommu/amd_idpgtbl.c
@@ -54,6 +54,7 @@
 #include <vm/vm_object.h>
 #include <vm/vm_page.h>
 #include <vm/vm_pager.h>
+#include <vm/vm_radix.h>
 #include <vm/vm_map.h>
 #include <dev/pci/pcireg.h>
 #include <machine/atomic.h>
@@ -103,6 +104,7 @@ amdiommu_domain_alloc_pgtbl(struct amdiommu_domain *domain)
 void
 amdiommu_domain_free_pgtbl(struct amdiommu_domain *domain)
 {
+	struct pctrie_iter pages;
 	vm_object_t obj;
 	vm_page_t m;
 
@@ -118,7 +120,8 @@ amdiommu_domain_free_pgtbl(struct amdiommu_domain *domain)
 
 	/* Obliterate ref_counts */
 	VM_OBJECT_ASSERT_WLOCKED(obj);
-	for (m = vm_page_lookup(obj, 0); m != NULL; m = vm_page_next(m))
+	vm_page_iter_init(&pages, obj);
+	VM_RADIX_FORALL(m, &pages)
 		vm_page_clearref(m);
 	VM_OBJECT_WUNLOCK(obj);
 	vm_object_deallocate(obj);