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--; } }