Date: Tue, 02 Jan 2001 11:43:01 -0800 (PST) From: John Baldwin <jhb@FreeBSD.org> To: Doug Rabson <dfr@nlsystems.com> Cc: alpha@FreeBSD.org Subject: RE: Interrupt threads Message-ID: <XFMail.010102114301.jhb@FreeBSD.org> In-Reply-To: <Pine.BSF.4.21.0012281532040.278-100000@salmon.nlsystems.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 28-Dec-00 Doug Rabson wrote: > I started trying to work on changing the interrupt system so that the > ithread runs with i/o interrupts disabled, which would allow us to remove > the ugly code which tries to disable the interrupt sources. > > Unfortunately I immediately came up against a brick wall - the very first > interrupt interrupted a proc which owned Giant and the ithread also wanted > Giant. It tried to block, which switched back to the Giant owner with > interrupts enabled, causing the interrupt to fire again. > > I'm not sure what the right approach to solving this is. Possibly we could > 'lend' the mutex holder the IPL of the blocking thread in a similar way to > priority propagation. Another idea is to link thread IPL directly to its > priority so that when the ithread lends its priority, the mutex owner will > automagically run with raised IPL. I detailed what I think is a way of using IPL to do this in a pair of e-mails to Drew that Matt was copied on. I'll go dig them up and forward them to here. However, tying IPL to a process or a mutex is a mistake I think. You can't tie it to Giant because Giant is going away eventually. You can't tie it to a process because the first context switch that doesn't switch into the ithread will cause the interrupt to fire again. Instead, you basically have to futz with the trapframe in the interrupt handler so it doesn't lower IPL upon returning from teh interrupt, and don't lower the IPL again until the interrupt handler completes and the ithread finishes. Interacting properly with ast() on this makes it a bit more tricky. Let me go dig up my e-mails and forward them to the list. -- John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/ PGP Key: http://www.baldwin.cx/~john/pgpkey.asc "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.010102114301.jhb>