Skip site navigation (1)Skip section navigation (2)
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>