cvs commit: src/sys/dev/scc scc_core.c
John Baldwin
john at baldwin.cx
Mon Jul 24 22:38:40 UTC 2006
On Monday 24 July 2006 18:25, Marcel Moolenaar wrote:
> marcel 2006-07-24 22:25:16 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/dev/scc scc_core.c
> Log:
> If we have multiple interrupt resources, like for Z8530 clones on the
> mac-io bus, we cannot setup FAST interrupt handlers. This because we
> use spinlocks to protect the hardware and all interrupt resources are
> assigned the same interrupt handler. When the interrupt handler is
> invoked for interrupt X, it could be preempted for interrupt Y while
> it was holding the lock (where X and Y are the interrupt resources
> corresponding a single instance of this driver). This is a deadlock.
> By only using a MPSAFE handler in that case we prevent preemption.
Umm, if you have interrupts preempting a spin lock you are going to have a lot
more problems. :( spinlock_enter() is supposed to either block or defer any
interrupts that could try to acquire a spin lock or interfere with a held
spin lock until spinlock_exit().
--
John Baldwin
More information about the cvs-src
mailing list