Subject: Re: CIA bridges never use BWX capability
To: Joachim Kuebart <kuebart@mathematik.uni-ulm.de>
From: Erik E. Fair <fair@netbsd.org>
List: port-alpha
Date: 04/09/2004 22:25:45
At 14:51 +0200 4/9/04, Joachim Kuebart wrote:
>Three solutions come to mind:
>
> 1) Up to revision 1.54 of /sys/arch/alpha/pci/cia.c, the check for
> EV5 and BWX was done "manually" in cia_init() by calling
> alpha_implver() and alpha_amask(). Reverting to this procedure
> works for me.
>
> 2) If 1) is deemed unaesthetic now that the cpu_amask variable
> exists, an alternative solution would be to reinitialise the
> bus_space call-vectors and memory windows every time cia_init()
> is called (which is at most twice). Every time except the first
> time this involves freeing "extent" structures allocated in the
> process.
>
> 3) Yet another way would be to initialise cpu_amask before console
> init time, instead of from cpu_announce_extensions().
>
>If there is a preference for one of these options, I will implement and
>send-pr it right away. ;)
As it happens, I have a DigitalServer 3305, which says:
cia0 at mainbus0: DECchip 2117x Core Logic Chipset (ALCOR/ALCOR2), pass 3
cia0: extended capabilities: 21<DWEN,BWEN>
cia0: using BWX for PCI config access
pci0 at cia0 bus 0
So I'm definitely interested in getting this fixed. Without knowing
the particulars of the intialization process, I'd say #3 is the right
thing, given that Jason (who made this change in the first place) was
trying to put it in a variable - he just didn't do it soon enough.
If that can't/doesn't work, I'd say that going back to #1 is best.
Really, this amounts to needing a piece of information in order to do
an initialization properly; I don't think we should set up an
initialization routine to get call more than once as in #2, unless
there is some expectation that the system needs that level of
dynamism (i.e. it's hot-plug replaceable or something).
Erik <fair@netbsd.org>