From: Mark Kettenis Subject: Re: uvm_fault: loaned pages leftovers To: Martin Pieuchot Cc: tech@openbsd.org Date: Mon, 20 Jan 2025 12:00:43 +0100 > Date: Mon, 20 Jan 2025 10:09:24 +0100 > From: Martin Pieuchot > > On 03/01/25(Fri) 16:39, Martin Pieuchot wrote: > > 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? > > Anyone? We haven't seen any panics from the previous commits, so let's see if we can hit this panic. ok kettenis@ > > 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) { > > > > > > >