From: Martin Pieuchot Subject: uvm_fault: loaned pages leftovers To: tech@openbsd.org Date: Fri, 3 Jan 2025 16:39:33 +0100 OpenBSD's UVM doesn't have support for loaned pages. Diff below removes dead code related to such pages. I've been hitting this hard on my 24 CPUs amd64. ok? Index: uvm/uvm_fault.c =================================================================== RCS file: /cvs/src/sys/uvm/uvm_fault.c,v diff -u -p -r1.158 uvm_fault.c --- uvm/uvm_fault.c 27 Dec 2024 12:04:40 -0000 1.158 +++ uvm/uvm_fault.c 1 Jan 2025 15:31:38 -0000 @@ -321,16 +321,9 @@ uvmfault_anonget(struct uvm_faultinfo *u * The last unlock must be an atomic unlock and wait * on the owner of page. */ - if (pg->uobject) { - /* Owner of page is UVM object. */ - uvmfault_unlockall(ufi, amap, NULL); - uvm_pagewait(pg, pg->uobject->vmobjlock, - "anonget1"); - } else { - /* Owner of page is anon. */ - uvmfault_unlockall(ufi, NULL, NULL); - uvm_pagewait(pg, anon->an_lock, "anonget2"); - } + KASSERT(pg->uobject == NULL); + uvmfault_unlockall(ufi, NULL, NULL); + uvm_pagewait(pg, anon->an_lock, "anonget"); } else { /* * No page, therefore allocate one. @@ -998,8 +997,6 @@ uvm_fault_upper(struct uvm_faultinfo *uf * if it fails (!OK) it will unlock everything for us. * if it succeeds, locks are still valid and locked. * also, if it is OK, then the anon's page is on the queues. - * if the page is on loan from a uvm_object, then anonget will - * lock that object for us if it does not fail. */ error = uvmfault_anonget(ufi, amap, anon); switch (error) {