From owner-freebsd-smp Wed Dec 3 17:44:26 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id RAA03592 for smp-outgoing; Wed, 3 Dec 1997 17:44:26 -0800 (PST) (envelope-from owner-freebsd-smp) Received: from mailhost.Ipsilon.COM (mailhost.ipsilon.com [205.226.5.12]) by hub.freebsd.org (8.8.7/8.8.7) with SMTP id RAA03587 for ; Wed, 3 Dec 1997 17:44:23 -0800 (PST) (envelope-from jre@ipsilon.com) Received: from radio.ipsilon.com (radio.Ipsilon.COM [205.226.28.3]) by mailhost.Ipsilon.COM (8.6.11/8.6.10) with SMTP id RAA05088; Wed, 3 Dec 1997 17:27:33 -0800 Message-ID: <34860715.31DFF4F5@ipsilon.com> Date: Wed, 03 Dec 1997 17:27:49 -0800 From: Joe Eykholt Organization: Ipsilon Software Engineering X-Mailer: Mozilla 3.01Gold (X11; I; FreeBSD 2.1.0-RELEASE i386) MIME-Version: 1.0 To: Steve Passe CC: smp@freebsd.org Subject: Re: SMP References: <199712040101.SAA10349@Ilsa.StevesCafe.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-smp@freebsd.org X-Loop: FreeBSD.org Precedence: bulk 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