I have not had a chance to test the pte += (idx ^ (PTED_HID(pted) ? pmap_ptab_mask : 0)) * 8; change yet, because with the improvements Martin Pieuchot has committed, my machines have been crash-free for many weeks. (Happily, that means Go builder openbsd-ppc64 was keeping up and enabled a Go fix for stack split size on openbsd.)
I did finally get a crash, copied below, that prompts me to ask for help. When I told ddb on the remote serial port to "show uvm", it stopped responding. Is there anything I can type remotely to interrupt ddb and reboot? I'm physically distant for a while. ddb{3}> show panic *cpu0: kernel diagnostic assertion "UVM_PSEG_INUSE(pseg, id)" failed: file "/sys/uvm/uvm_pager.c", line 207 ddb{3}> trace _rb_remove+0x3a4 uvm_pmr_get1page+0x2b0 uvm_pagezero_thread+0x104 proc_trampoline+0x10 ddb{3}> show registers r0 0xc5bc44 uvm_pmr_get1page+0x2b4 r1 0xc00000013b405750 r2 0x1052000 .TOC. r3 0 r4 0x10 r5 0xc00000000b615000 r6 0 r7 0 r8 0x1 r9 0xfe0aaf95a2e48275 r10 0x82000808 r11 0xc5bc44 uvm_pmr_get1page+0x2b4 r12 0 r13 0x4f308d2b8 r14 0 r15 0 r16 0 r17 0xffffffffffffffff r18 0 r19 0xc00000013b4058c0 r20 0 r21 0xc00000000b614f80 r22 0x1008f78 uvm_pmr_addr_RBT_INFO r23 0x1008f98 uvm_pmr_size_RBT_INFO r24 0x1 r25 0 r26 0 r27 0xc00000000b615090 r28 0xc00000000b615010 r29 0xc0000000000a1008 r30 0x1008f98 uvm_pmr_size_RBT_INFO r31 0xc5def0 uvm_pagezero_thread lr 0xc5bc44 uvm_pmr_get1page+0x2b4 cr 0x22222808 xer 0 ctr 0xb4ee34 tb_get_timecount iar 0xb9b998 _rb_remove+0x3a4 msr 0x9000000000009032 dar 0x18 dsisr 0x40000000 _rb_remove+0x3a4: lwz r4,24(r3) ddb{3}> show proc PROC (zerothread) tid=92966 pid=31334 tcnt=1 stat=onproc flags process=14000 proc=200 runpri=126, usrpri=126, slppri=127, nice=40 wchan=0x0, wmesg=, ps_single=0x0 scnt=0 ecnt=0 forw=0xffffffffffffffff, list=0xc00000013b3f0010,0xc00000013b3f0a60 process=0xc00000013b40b3d0 user=0xc00000013b401000, vmspace=0x11184a0 estcpu=36, cpticks=26, pctcpu=5.58, user=0, sys=11130657, intr=42872 ddb{3}> show uvm ...hangs...