Drop kernel lock before panic to avoid WITNESS report during fault
authorkn <kn@openbsd.org>
Wed, 5 Jul 2023 12:58:55 +0000 (12:58 +0000)
committerkn <kn@openbsd.org>
Wed, 5 Jul 2023 12:58:55 +0000 (12:58 +0000)
commit972e7042aae4071cc6abde728782de81fd47d3d6
tree137b0da76b6b3e9ca2c25e24f1d057294744e1b9
parent2979b3a0422e44e9cb308f99c951faa0b2c845bb
Drop kernel lock before panic to avoid WITNESS report during fault

holding a spinlock, eg. malloc's malloc_mutex in "Data modified on freelist ..."
triggers "acquiring blockable sleep lock with spinlock or critical section held"
since kpageflttrap() grabs the kernel lock before fault() to serialise multiple
threds/faults avoid interleaved console text.

But fault() immediately sets the per-CPU panic string, so the kernel lock does
not really help here.

Use 'show panic' to recover from garbled console text if need be, as usual.
The i386 equivalent does not use the kernel lock, either.

OK bluhm kettenis
sys/arch/amd64/amd64/trap.c