1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-18 10:35:55 +00:00
freebsd/sys/isa
Bruce Evans 4df0520624 clock.c:
Quick fix for calling DELAY() for ddb input in some (atkbd-based)
console drivers.  ddb must not use any normal locks, but DELAY()
normally calls getit() which needs clock_lock.  One problem with using
normal locks in ddb is that deadlock is possible, but deadlock on
clock_lock is unlikely becaluse clock_lock is bogusly recursive,
apparently just to hide the problem of ddb using it.  The i8254 clock
hardware has mostly write-only registers so it is important for it to
use a lock that gives exclusive access.  (atkbd hardware is also
unfriendly to reentrant software but that problem is more local and
already solved.)  I mostly saw the symptoms of the bug caused by
unlocking in getit() running cpu_unpend().  cpu_unpend() should not
be called while in ddb and Debugger() calls for failing assertions
about this caused a breakpoint within ddb.

ddb must also not call getit() because ddb may be being used to step
through clock initialization code that has stopped or otherwise mangled
the clock.  If the clock is stopped, then getit() always returns the
same value and DELAY() takes forever if it trusts getit().

The quick fix is implement DELAY(n) as (n * timer_freq / 1000000)
inb(0x84)'s if ddb is active.

machdep.c:
Don't permit recursion on clock_lock.
2003-09-07 14:23:08 +00:00
..
atkbd_isa.c Use __FBSDID(). 2003-06-11 00:34:37 +00:00
atkbdc_isa.c - Use the new resource_disabled() helper function to see if devices are 2003-07-02 16:09:02 +00:00
atrtc.c clock.c: 2003-09-07 14:23:08 +00:00
fd.c Put the device cloning functions for disk-drivers under #ifndef BURN_BRIDGES. 2003-09-05 10:40:16 +00:00
fdreg.h
isa_common.c - Make the isab devclass global to allow for multiple ISA bridge drivers. 2003-07-08 18:56:58 +00:00
isa_common.h No need to declare M_ISADEV here. 2002-10-16 10:38:48 +00:00
isa_if.m
isahint.c - Use the new resource_disabled() helper function to see if devices are 2003-07-02 16:09:02 +00:00
isareg.h Clean up some antique stuff. We do not support Weitek FPUs etc, and never 2003-09-05 14:54:26 +00:00
isavar.h - Make the isab devclass global to allow for multiple ISA bridge drivers. 2003-07-08 18:56:58 +00:00
orm.c Use __FBSDID(). 2003-06-11 00:34:37 +00:00
pnp.c Use __FBSDID(). 2003-06-11 00:34:37 +00:00
pnpparse.c Use __FBSDID(). 2003-06-11 00:34:37 +00:00
pnpreg.h
pnpvar.h
psm.c Add support for the A4 Tech RFSW-35 mouse wheel. Probe is similar to 2003-07-12 18:36:04 +00:00
rtc.h
syscons_isa.c - Use the new resource_disabled() helper function to see if devices are 2003-07-02 16:09:02 +00:00
vga_isa.c Use __FBSDID(). 2003-06-11 00:34:37 +00:00