On Thu, 30 May 2024 13:11:41 -0700 Eric Grosse <gro...@gmail.com> wrote:
> ddb{7}> show panic > > cpu6: kernel diagnostic assertion "((flags & PGO_LOCKED) != 0 && > rw_lock_held( > uobj->vmobjlock)) || (flags & PGO_LOCKED) == 0" failed: file > "/sys/uvm/uvm_vnod > e.c", line 953 > > *cpu7: assertwaitok: non-zero mutex count: 1 This kernel diff might or might not help. It changes some memory barriers from "isync" to "sync". I had a problem with corrupt memory. I had 2 mounts of the same nfs filesystem; the same file was good in one mount and corrupt in the other mount, as if something corrupted the cached file in memory. I failed to reproduce the problem, so I never learned whether or not the memory barrier affected it. --gkoehler Index: arch/powerpc64/include/atomic.h =================================================================== RCS file: /cvs/src/sys/arch/powerpc64/include/atomic.h,v diff -u -p -r1.3 atomic.h --- arch/powerpc64/include/atomic.h 29 Aug 2022 02:01:18 -0000 1.3 +++ arch/powerpc64/include/atomic.h 8 Mar 2024 18:06:58 -0000 @@ -276,10 +276,10 @@ _atomic_addic_long_nv(volatile unsigned #define __membar(_f) do { __asm volatile(_f ::: "memory"); } while (0) #if defined(MULTIPROCESSOR) || !defined(_KERNEL) -#define membar_enter() __membar("isync") +#define membar_enter() __membar("sync") #define membar_exit() __membar("sync") #define membar_producer() __membar("sync") -#define membar_consumer() __membar("isync") +#define membar_consumer() __membar("sync") #define membar_sync() __membar("sync") #else #define membar_enter() __membar("")