Date: Wed, 03 Dec 1997 17:27:49 -0800 From: Joe Eykholt <jre@Ipsilon.COM> To: Steve Passe <smp@csn.net> Cc: smp@freebsd.org Subject: Re: SMP Message-ID: <34860715.31DFF4F5@ipsilon.com> References: <199712040101.SAA10349@Ilsa.StevesCafe.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Steve, I'm glad you see the problem. I wasn't pressing for an immediate solution so much as pointing out the problem. I think the long term solution is to do the EOI after the interrupt is handled, even if it was deferred until doreti, but that probably requires assigning priorities to interrupts, and everything that goes along with that, maybe even making cpl a local-APIC priority instead of an IRQ mask. I'm not sure UNMASK_IRQ() should do the eoi either, since that can happen from doreti as well, right? Maybe the Xintrxx and Xresumexx should both call the handler, Xintrxx should do the EOI, and then join up for the doreti. ... but the problem with that is that lower priority interrupts are blocked for the duration of the handler ... so that seems to force the determination of interrupt priorities. It's funny that the APIC design seemingly forces the old kernel spl-priority model after BSD adapted to the PIC model. It seems to me the h/w and s/w designers both tried to adapt to the other and both ended up changing to be compatible and thereby ended up incompatible! It might take awhile before I'd be able to test any change in this area, I can't promise very quick turnaround. Joe
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?34860715.31DFF4F5>