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>