1
0
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:
Robert Watson 2005-02-03 10:35:05 +00:00
parent 70ffe5d36d
commit faabfac9ff
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=141186

View File

@ -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);
}