git: kernel - Make kprintf / kputchar more robust
Aaron LI
aly at crater.dragonflybsd.org
Tue Jul 20 16:30:35 PDT 2021
commit d9126105909034b7d4010f933837c7db307c8ebf
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Thu Jul 15 14:02:21 2021 -0700
kernel - Make kprintf / kputchar more robust
* kprintf() via kputchar() can deadlock due to kprintf()s made from
Xinvltlb (which ignores critical sections). However, we still want
to be able to dump diagnostic information from Xinvltlb!
* Adjust sccnputc() to use a non-blocking syscons lock.
* Adjust kputchar() to not issue a wakeup() on the console support
thread if called with mycpu->gd_intr_nesting_level != 0. To
compensate, the support thread now checks at a minimum rate of
once per second.
* Adjust kvcprintf() to always spin_trylock(), which means that
lines will be lost if multiple cpu's compete for the console
(but all lines will still wind up in the dmesg buffer). This
needs to be done to allow kprintf()s from Xinvltlb (which ignore
critical sections) to not deadlock the machine.
Summary of changes:
sys/dev/misc/syscons/syscons.c | 3 ++-
sys/kern/subr_prf.c | 42 ++++++++++++++++++++----------------------
2 files changed, 22 insertions(+), 23 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d9126105909034b7d4010f933837c7db307c8ebf
--
DragonFly BSD source repository
More information about the Commits
mailing list