On 2019/11/30 5:50, Andrew Doran wrote:
Module Name:    src
Committed By:   ad
Date:           Fri Nov 29 20:50:54 UTC 2019

Modified Files:
        src/sys/kern: kern_rwlock.c

Log Message:
A couple more tweaks to avoid reading the lock word.


To generate a diff of this commit:
cvs rdiff -u -r1.56 -r1.57 src/sys/kern/kern_rwlock.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Hi,

After this commit, GENERIC64 kernel on evbarm-aarch64 does no longer
boot multiuser anymore with rwlock related panics:

        panic: kernel diagnostic assertion "vm_map_locked_p(map)" failed: file 
"../../../../uvm/uvm_map.c", line 1315

or

        panic: kernel diagnostic assertion "rw_write_held(&map->lock)" failed: file 
"../../../../uvm/uvm_map.c", line 701

By reverting kern_rwlock.c to rev 1.56, panics disappear as far as
I can see.

Thanks,
rin
----
...
Starting nfsd.
[  24.5728628] panic: kernel diagnostic assertion "vm_map_locked_p(map)" failed: file 
"../../../../uvm/uvm_map.c", line 1315
[  24.5880334] cpu0: Begin traceback...
[  24.5880334] trace fp ffffffc033453aa0
[  24.5954047] fp ffffffc033453ac0 vpanic() at ffffffc0004892d0 
netbsd:vpanic+0x160
[  24.6054105] fp ffffffc033453b30 kern_assert() at ffffffc0005bc1ac 
netbsd:kern_assert+0x5c
[  24.6154460] fp ffffffc033453bc0 uvm_map_enter() at ffffffc000402fb0 
netbsd:uvm_map_enter+0x3b8
[  24.6254813] fp ffffffc033453c60 uvm_map() at ffffffc00040351c 
netbsd:uvm_map+0x9c
[  24.6355640] fp ffffffc033453cf0 uvm_mmap.part.0() at ffffffc000405ccc 
netbsd:uvm_mmap.part.0+0x13c
[  24.6454881] fp ffffffc033453d70 sys_mmap() at ffffffc000406390 
netbsd:sys_mmap+0x1d8
[  24.6570928] fp ffffffc033453e20 syscall() at ffffffc0000787dc 
netbsd:syscall+0x18c
[  24.6683611] tf ffffffc033453ed0 el0_trap() at ffffffc000076e88 
netbsd:el0_trap
[  24.6794682] ---- trapframe 0xffffffc033453ed0 (304 bytes) ----
...
----
...
Starting postfix.
[  30.0175876] panic: kernel diagnostic assertion "rw_write_held(&map->lock)" failed: 
file "../../../../uvm/uvm_map.c", line 701
[  30.0275865] cpu1: Begin traceback...
[  30.0275865] trace fp ffffffc034b0edf0
[  30.0375913] fp ffffffc034b0ee10 vpanic() at ffffffc0004892d0 
netbsd:vpanic+0x160
[  30.0475892] fp ffffffc034b0ee80 kern_assert() at ffffffc0005bc1ac 
netbsd:kern_assert+0x5c
[  30.0575897] fp ffffffc034b0ef10 vm_map_unlock() at ffffffc0003ff6c4 
netbsd:vm_map_unlock+0x94
[  30.0675928] fp ffffffc034b0ef30 uvm_map_enter() at ffffffc000402f04 
netbsd:uvm_map_enter+0x30c
[  30.0775928] fp ffffffc034b0efd0 uvm_map() at ffffffc00040351c 
netbsd:uvm_map+0x9c
[  30.0775928] fp ffffffc034b0f060 uvm_pagermapin() at ffffffc00040b69c 
netbsd:uvm_pagermapin+0xac
[  30.0975934] fp ffffffc034b0f0e0 genfs_getpages() at ffffffc0004f5ff8 
netbsd:genfs_getpages+0xbb8
[  30.1075948] fp ffffffc034b0f270 VOP_GETPAGES() at ffffffc0004f38b4 
netbsd:VOP_GETPAGES+0x44
[  30.1175956] fp ffffffc034b0f2e0 ubc_fault() at ffffffc0003f6f30 
netbsd:ubc_fault+0x168
[  30.1275959] fp ffffffc034b0f370 uvm_fault_internal() at ffffffc0003f9a18 
netbsd:uvm_fault_internal+0x478
[  30.1375967] fp ffffffc034b0f580 data_abort_handler() at ffffffc000079f88 
netbsd:data_abort_handler+0x100
[  30.1475968] tf ffffffc034b0f600 el1_trap() at ffffffc000076e24 
netbsd:el1_trap
[  30.1575982] ---- trapframe 0xffffffc034b0f600 (304 bytes) ----
...

Reply via email to