mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-21 15:45:02 +00:00
When entering siocnputc() with (kdb_active), don't acquire (or
release) the sio spin mutex, as use of synchronization primitives in the debugger can result in substantial problems. With this patch in place entering the debugger via a serial console is made substantially more reliable. MFC after: 1 week Tested by: kris Discussed with: bde
This commit is contained in:
parent
70ffe5d36d
commit
faabfac9ff
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=141186
@ -2583,16 +2583,20 @@ siocnputc(struct consdev *cd, int c)
|
||||
}
|
||||
s = spltty();
|
||||
need_unlock = 0;
|
||||
if (sio_inited == 2 && !mtx_owned(&sio_lock)) {
|
||||
mtx_lock_spin(&sio_lock);
|
||||
need_unlock = 1;
|
||||
if (!kdb_active) {
|
||||
if (sio_inited == 2 && !mtx_owned(&sio_lock)) {
|
||||
mtx_lock_spin(&sio_lock);
|
||||
need_unlock = 1;
|
||||
}
|
||||
}
|
||||
siocnopen(&sp, iobase, speed);
|
||||
siocntxwait(iobase);
|
||||
outb(iobase + com_data, c);
|
||||
siocnclose(&sp, iobase);
|
||||
if (need_unlock)
|
||||
mtx_unlock_spin(&sio_lock);
|
||||
if (!kdb_active) {
|
||||
if (need_unlock)
|
||||
mtx_unlock_spin(&sio_lock);
|
||||
}
|
||||
splx(s);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user