Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 02 May 2002 07:26:03 +1000
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        Bernd Walter <ticso@cicely5.cicely.de>
Cc:        freebsd-alpha@FreeBSD.ORG
Subject:   Re: AlphaServer 400 interrupt problems
Message-ID:  <20020502072602.U25071@gsmx07.alcatel.com.au>
In-Reply-To: <20020501084436.GH60196@cicely5.cicely.de>; from ticso@cicely5.cicely.de on Wed, May 01, 2002 at 10:44:36AM %2B0200
References:  <20020501114313.R25071@gsmx07.alcatel.com.au> <20020501084436.GH60196@cicely5.cicely.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2002-May-01 10:44:36 +0200, Bernd Walter <ticso@cicely5.cicely.de> wrote:
>On Wed, May 01, 2002 at 11:43:13AM +1000, Peter Jeremy wrote:
>> A secondary problem is that all interrupts are treated as non-sharable
>> ISA interrupts.  I don't believe this is valid.  Whilst the AS400
>> interrupt routing uses the standard 8259 pair and interrupts from
>> ISA cards can't be shared, I don't see why the kernel doesn't permit
>> PCI interrupts to be shared.  The AS400 technical documentation
>> definitely indicates that interrupts can be shared.
>
>Interesting.

To clarify this, the following is from "Digital AlphaStation 200/400
Series, Technical Information", Part Number: EK-PCDSA-TI. A01

p6-3: "IRQ2: Device Interrupts"
[The IRQ output from the master 8259 is routed to CPU IRQ2].
"When a device interrupt has been detected on CPU line IRQ2, the
 PALcode interrupt dispatcher must generate a PCI INTACK cycle.  The
 PCI-ISA bridge chip sees this cycle and converts it into two cycles
 that freeze and then read the normal ISA-style interrupt priority
 encoders within the bridge chip.  The bridge chip then returns a
 vector on data bits <7:0>.

 This INTACK cycle does not remove the source of the interrupt;
 specific code that accesses the device that interrupted must do this.
 The bridge chip releases its interrupt when the interrupt dispatcher
 issues an EOI command.  This is a cooperative activity performed by
 some combination of PALcode and the particular operating system."

p6-4: "Interrupt Inputs"
...
"Because many of the interrupt requests that originate from an ISA slot
 can be connected to the same IRQ pin ("shared"), you must ensure that
 the jumpers selecting the actual connection are set up so that no
 sources are joined together, unless the single interrupt they would
 generate can be resolved as to its source."
...

It also includes tables giving the PCI slot/INT to PIRQ routing:

For an AS200:

PIRQ0 = Ethernet | 1B | 2C
PIRQ1 = 1A | 1D | 2B
PIRQ2 = 1C | 2A | 2D
PIRQ3 = SCSI

For an AS400:

PIRQ0 = 1A | 1D | 2B | 3C
PIRQ1 = 2A | 2D | 3B | 1C
PIRQ2 = 3A | 3D | 1B | 2C
PIRQ3 = SCSI

(These can be treated equivalently if you treat the AS200 embedded ethernet
as PCI slot 1, INTA, with physical slots 1 and 2 equivalent to slots 2 & 3
on an AS400).

The comments in dec_2100_a50_intr_map() are somewhat confusing (there
are two slot 3's listed), but one interpretation of the code seems to
agree with this table.

Peter

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?20020502072602.U25071>