cvs commit: src/sys/dev/scc scc_core.c
Marcel Moolenaar
marcel at xcllnt.net
Mon Jul 24 23:37:45 UTC 2006
On Jul 24, 2006, at 3:38 PM, John Baldwin wrote:
> 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().
Doh! You're right. I think I got confused with critical regions.
Thanks for pointing it out.
--
Marcel Moolenaar USPA: A-39004 marcel at xcllnt.net
More information about the cvs-src
mailing list