Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Dec 2005 23:26:36 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        "Darren Pilgrim" <darren.pilgrim@bitfreak.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: can someone explain...[ PCI interrupts]
Message-ID:  <200512082326.37351.jhb@freebsd.org>
In-Reply-To: <000101c5fc28$f791b520$642a15ac@smiley>
References:  <000101c5fc28$f791b520$642a15ac@smiley>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 08 December 2005 01:55 pm, Darren Pilgrim wrote:
> From: John Baldwin
>
> > On Wednesday 07 December 2005 06:11 pm, Darren Pilgrim wrote:
> > > What if the APIC was programmed to be edge-triggered just before the
> > > ithread runs and programmed back to level-trigger when the ithread
> > > completes?
> >
> > I'd rather work on my other solution which might be about 5 lines of co=
de
> > rather than screw around with the APICs when that might have other side
> > effects.
>
> My apologies, I didn't intend to come off as dictating design.  I'm
> interested in the subject and it's rare to find people knowledgeable and
> willing to converse about more advanced topics.
>
> Like many others here, I have a very significant investment in hardware to
> which this directly relates.  I wanted to find out about the details of t=
he
> behavior I'm observing and the impact of various solutions as both a
> business man and a student of engineering.

In fairness, Linux does seem to mess with the APICs this way (set to edge w=
hen=20
an interrupt comes in and then reset it to level) to work around a bug on=20
some older I/O APICs.  I'm not sure / can't remember if they do it for all=
=20
PCI interrupts on APICs though.  I need to look at the docs for the PXH=20
bridges in question again, but I think that when it does the legacy INTx=20
thing it is swizzling the interrupts to the bridge's INTx pins using the=20
standard PCI-PCI swizzle, in which case patching around the routing is a=20
simple patch of changing the $PIR and MPTable drivers to ignore such bridge=
s=20
based on the devid, and changing the ACPI PCI-PCI bridge driver to ignore t=
he=20
_PRT for such bridges.  Fortunately, one of my recently added test machines=
=20
reproduces the problem so I can test this idea and give people a patch that=
=20
at least somewhat works for further testing.  Maybe in a day or so.

=2D-=20
John Baldwin <jhb@FreeBSD.org> =A0<>< =A0http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" =A0=3D =A0http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200512082326.37351.jhb>