Is the large (greater than 2^32) value of pr_nget below exceptional? My crashes only happen for long-running heavy workloads so a big value seems plausible but maybe there is some limit I'm supposed to reconfigure for such workloads?
panic: pmap_enter: failed to allocate pted Stopped at panic+0x134: ori r0,r0,0x0 TID PID UID PRFLAGS PFLAGS CPU COMMAND 234577 13111 8889 0x18000001 0 3 go 491287 13050 8889 0xa001007 0 2 asm 331460 14455 8889 0x1a000003 0 5 asm 66317 80047 8889 0x1a000003 0 1 compile 331134 57997 8889 0x1a000003 0x4000000 0 go 240615 91938 8889 0x1a000003 0x4000000 6 go *247303 89969 8889 0x1a000003 0x4000000 4K go 28756 33586 0 0x14000 0x200 7 pagedaemon panic+0x134 pmap_enter+0x218 uvm_km_kmemalloc_pla+0x1f4 uvm_uarea_alloc+0x70 thread_fork+0xd8 sys___tfork+0xc4 syscall+0x530 trap+0x5dc trapagain+0x4 --- syscall (number 8) --- End of kernel: 0x457c99db0 lr 0x4bddd2604 ddb{4}>show struct pool pmap_pted_pool struct pmap_pted_pool at 0x1089a98 (424 bytes) {pr_lock = {prl_mtx = {mtx_owner = (void *)0x0, mtx_wantipl = 7, mtx_oldipl = 0}, prl_rwlock = {rwl_owner = 0, r wl_name = (const unsigned char *)0x700000000}}, pr_lock_ops = (const pool_lock_ ops *)0xfc4950, pr_poollist = {sqe_next = (struct pool *)0x10898f0}, pr_emptypa ges = {tqh_first = (struct pool_page_header *)0x0, tqh_last = 0x1089ab8}, pr_fu llpages = {tqh_first = (struct pool_page_header *)0xc00000003e3b2f90, tqh_last = 0xc00000014b344f90}, pr_partpages = {tqh_first = (struct pool_page_header *)0x c000000140250f90, tqh_last = 0xc000000146821f90}, pr_curpage = (struct pool_pag e_header *)0x0, pr_size = 56, pr_minitems = 20, pr_minpages = 1, pr_maxpages = 8 , pr_npages = 4632, pr_itemsperpage = 71, pr_slack = 0, pr_nitems = 328872, pr_ nout = 328870, pr_hardlimit = 4294967295, pr_serial = 14, pr_pgsize = 4096, pr_ pgmask = 18446744073709547520, pr_alloc = (struct pool_allocator *)0xfe9b40, pr _wchan = (const unsigned char *)0xeb08e4, pr_flags = 0, pr_ipl = 7, pr_phtree = {rbh_root = {rbt_root = (struct rb_entry *)0x0}}, pr_cache = (struct cpumem *) 0x0, pr_cache_magic = [0,0], pr_cache_lock = {prl_mtx = {mtx_owner = (void *)0x 0, mtx_wantipl = 0, mtx_oldipl = 0}, prl_rwlock = {rwl_owner = 0, rwl_name = (c onst unsigned char *)0x0}}, pr_cache_lists = {tqh_first = (struct pool_cache_it em *)0x0, tqh_last = 0x0}, pr_cache_nitems = 0, pr_cache_items = 0, pr_cache_co ntention = 0, pr_cache_contention_prev = 0, pr_cache_timestamp = 0, pr_cache_ng c = 0, pr_cache_nout = 0, pr_align = 8, pr_maxcolors = 2, pr_phoffset = 3984, p r_hardlimit_warning = (const unsigned char *)0x0, pr_hardlimit_ratecap = {tv_se c = 0, tv_usec = 0}, pr_hardlimit_warning_last = {tv_sec = 0, tv_usec = 0}, pr_ requests_lock = {prl_mtx = {mtx_owner = (void *)0x0, mtx_wantipl = 7, mtx_oldip l = 0}, prl_rwlock = {rwl_owner = 0, rwl_name = (const unsigned char *)0x700000 000}}, pr_requests = {tqh_first = (struct pool_request *)0x0, tqh_last = 0x1089 be8}, pr_requesting = 0, pr_nget = 5523479116, pr_nfail = 13, pr_nput = 5523150 246, pr_npagealloc = 1387529, pr_npagefree = 1382897, pr_hiwat = 10072, pr_nidl e = 0, pr_crange = (const kmem_pa_mode *)0xfc60b0} ddb{4}>show struct pool pmap_vp_pool struct pmap_vp_pool at 0x10898f0 (424 bytes) {pr_lock = {prl_mtx = {mtx_owner = (void *)0x0, mtx_wantipl = 7, mtx_oldipl = 7}, prl_rwlock = {rwl_owner = 0, rw l_name = (const unsigned char *)0x700000007}}, pr_lock_ops = (const pool_lock_o ps *)0xfc4950, pr_poollist = {sqe_next = (struct pool *)0x1089c40}, pr_emptypag es = {tqh_first = (struct pool_page_header *)0xc0000001449f7af0, tqh_last = 0xc 000000142a861d8}, pr_fullpages = {tqh_first = (struct pool_page_header *)0xc000 00003e3bbd20, tqh_last = 0xc00000014d3f9248}, pr_partpages = {tqh_first = (stru ct pool_page_header *)0xc00000003c3e9250, tqh_last = 0xc00000014a4e4d28}, pr_cu rpage = (struct pool_page_header *)0xc00000014a4e4d28, pr_size = 2048, pr_minit ems = 10, pr_minpages = 5, pr_maxpages = 8, pr_npages = 17150, pr_itemsperpage = 2, pr_slack = 0, pr_nitems = 34300, pr_nout = 34255, pr_hardlimit = 4294967295 , pr_serial = 13, pr_pgsize = 4096, pr_pgmask = 18446744073709547520, pr_alloc = (struct pool_allocator *)0xfe9b40, pr_wchan = (const unsigned char *)0xee10ef, pr_flags = 0, pr_ipl = 7, pr_phtree = {rbh_root = {rbt_root = (struct rb_entry *)0xc00000013f618a08}}, pr_cache = (struct cpumem *)0x0, pr_cache_magic = [0,0 ], pr_cache_lock = {prl_mtx = {mtx_owner = (void *)0x0, mtx_wantipl = 0, mtx_ol dipl = 0}, prl_rwlock = {rwl_owner = 0, rwl_name = (const unsigned char *)0x0}} , pr_cache_lists = {tqh_first = (struct pool_cache_item *)0x0, tqh_last = 0x0}, pr_cache_nitems = 0, pr_cache_items = 0, pr_cache_contention = 0, pr_cache_con tention_prev = 0, pr_cache_timestamp = 0, pr_cache_ngc = 0, pr_cache_nout = 0, p r_align = 8, pr_maxcolors = 1, pr_phoffset = 0, pr_hardlimit_warning = (const u nsigned char *)0x0, pr_hardlimit_ratecap = {tv_sec = 0, tv_usec = 0}, pr_hardli mit_warning_last = {tv_sec = 0, tv_usec = 0}, pr_requests_lock = {prl_mtx = {mt x_owner = (void *)0x0, mtx_wantipl = 7, mtx_oldipl = 0}, prl_rwlock = {rwl_owne r = 0, rwl_name = (const unsigned char *)0x700000000}}, pr_requests = {tqh_firs t = (struct pool_request *)0x0, tqh_last = 0x1089a40}, pr_requesting = 0, pr_ng et = 147054103, pr_nfail = 0, pr_nput = 147019848, pr_npagealloc = 6817420, pr_ npagefree = 6800270, pr_hiwat = 20556, pr_nidle = 17, pr_crange = (const kmem_p a_mode *)0xfc60b0} ddb{4}> show struct pool pmap_pmap_pool struct pmap_pmap_pool at 0x1089c40 (424 bytes) {pr_lock = {prl_mtx = {mtx_owner = (void *)0x0, mtx_wantipl = 7, mtx_oldipl = 0}, prl_rwlock = {rwl_owner = 0, r wl_name = (const unsigned char *)0x700000000}}, pr_lock_ops = (const pool_lock_ ops *)0xfc4950, pr_poollist = {sqe_next = (struct pool *)0x104b5c0}, pr_emptypa ges = {tqh_first = (struct pool_page_header *)0xc00000014ef78f90, tqh_last = 0x c00000014ef78f90}, pr_fullpages = {tqh_first = (struct pool_page_header *)0x0, t qh_last = 0x1089c70}, pr_partpages = {tqh_first = (struct pool_page_header *)0x c00000003e3aef90, tqh_last = 0xc000000149c6ef90}, pr_curpage = (struct pool_pag e_header *)0xc00000003e3aef90, pr_size = 48, pr_minitems = 2, pr_minpages = 1, p r_maxpages = 8, pr_npages = 3, pr_itemsperpage = 83, pr_slack = 0, pr_nitems = 2 49, pr_nout = 138, pr_hardlimit = 4294967295, pr_serial = 12, pr_pgsize = 4096, pr_pgmask = 18446744073709547520, pr_alloc = (struct pool_allocator *)0xfe9b40 , pr_wchan = (const unsigned char *)0xe91044, pr_flags = 0, pr_ipl = 7, pr_phtr ee = {rbh_root = {rbt_root = (struct rb_entry *)0x0}}, pr_cache = (struct cpume m *)0x0, pr_cache_magic = [0,0], pr_cache_lock = {prl_mtx = {mtx_owner = (void * )0x0, mtx_wantipl = 0, mtx_oldipl = 0}, prl_rwlock = {rwl_owner = 0, rwl_name = (const unsigned char *)0x0}}, pr_cache_lists = {tqh_first = (struct pool_cache _item *)0x0, tqh_last = 0x0}, pr_cache_nitems = 0, pr_cache_items = 0, pr_cache _contention = 0, pr_cache_contention_prev = 0, pr_cache_timestamp = 0, pr_cache _ngc = 0, pr_cache_nout = 0, pr_align = 8, pr_maxcolors = 1, pr_phoffset = 3984 , pr_hardlimit_warning = (const unsigned char *)0x0, pr_hardlimit_ratecap = {tv _sec = 0, tv_usec = 0}, pr_hardlimit_warning_last = {tv_sec = 0, tv_usec = 0}, p r_requests_lock = {prl_mtx = {mtx_owner = (void *)0x0, mtx_wantipl = 7, mtx_old ipl = 0}, prl_rwlock = {rwl_owner = 0, rwl_name = (const unsigned char *)0x7000 00000}}, pr_requests = {tqh_first = (struct pool_request *)0x0, tqh_last = 0x10 89d90}, pr_requesting = 0, pr_nget = 1113457, pr_nfail = 0, pr_nput = 1113319, p r_npagealloc = 3, pr_npagefree = 0, pr_hiwat = 3, pr_nidle = 1, pr_crange = (co nst kmem_pa_mode *)0xfc60b0} ddb{4}> On Wed, Jun 5, 2024 at 12:16 PM Miod Vallat <m...@online.fr> wrote: > > > There's a corruption... > > > > > 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 > > > ddb{7}> trace > > > panic+0x134 > > > assertwaitok+0xf8 > > > mi_switch+0x5c > > > sleep_finish+0x160 > > > rw_enter+0x1cc > > > vm_map_lock_read_ln+0x38 > > > uvmfault_lookup+0x114 > > > uvm_fault_check+0x68 > > > uvm_fault+0x12c > > > trap+0x7a4 > > > trapagain+0x4 > > > --- trap (type 0x300) --- > > > phtree_RBT_COMPARE+0x28 > > > pool_do_put+0x94 > > > pool_put+0x94 > > ^^^^ > > ...inside this pool. Which of the 3 is it? Can someone with a ppc64 > > figure out? > > It's pmap_vp_pool.