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          [EMAIL PROTECTED]


_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to