I'd like to use a proper interface to add/remove pages on the
active/inactive queues.  This will help for lock assertions and help
improving the existing LRU limitations.

Diff below makes uvm_pageunwire() call uvm_pageactivate() instead of
inserting the page itself.

ok?

Index: uvm/uvm_page.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_page.c,v
retrieving revision 1.163
diff -u -p -r1.163 uvm_page.c
--- uvm/uvm_page.c      12 Mar 2022 12:34:22 -0000      1.163
+++ uvm/uvm_page.c      26 Apr 2022 12:13:59 -0000
@@ -1279,9 +1279,7 @@ uvm_pageunwire(struct vm_page *pg)
 
        pg->wire_count--;
        if (pg->wire_count == 0) {
-               TAILQ_INSERT_TAIL(&uvm.page_active, pg, pageq);
-               uvmexp.active++;
-               atomic_setbits_int(&pg->pg_flags, PQ_ACTIVE);
+               uvm_pageactivate(pg);
                uvmexp.wired--;
        }
 }

Reply via email to