From: Martin Pieuchot Subject: sparc64 vs uvm_purge() To: tech@openbsd.org Date: Wed, 26 Nov 2025 12:32:00 +0100 sparc64 is subtly broken since uvm_purge() is running in parallel. It became obvious that the architecture requires more MD work before more parts of UVM can run in parallel. That said, such breakages are not helping. So here's a diff I sent before release to not run uvm_purge() w/o KERNEL_LOCK() on sparc64. I'd like to get it in. Anyone interested in exposing pmap/UVM races on sparc64 will now where to start. ok? Index: kern/kern_exit.c =================================================================== RCS file: /cvs/src/sys/kern/kern_exit.c,v diff -u -p -r1.252 kern_exit.c --- kern/kern_exit.c 10 Aug 2025 15:17:57 -0000 1.252 +++ kern/kern_exit.c 26 Nov 2025 11:19:21 -0000 @@ -253,11 +253,13 @@ exit1(struct proc *p, int xexit, int xsi * It is safe to release them all since exit1() * will not return. */ -#ifdef MULTIPROCESSOR +#if defined(MULTIPROCESSOR) && !defined(__sparc64__) __mp_release_all(&kernel_lock); #endif uvm_purge(); +#if !defined(__sparc64__) KERNEL_LOCK(); +#endif } }