Date: Mon, 24 Jul 2006 18:38:29 -0400 From: John Baldwin <john@baldwin.cx> To: Marcel Moolenaar <marcel@freebsd.org> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/dev/scc scc_core.c Message-ID: <200607241838.29930.john@baldwin.cx> In-Reply-To: <200607242225.k6OMPG61048242@repoman.freebsd.org> References: <200607242225.k6OMPG61048242@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607241838.29930.john>