v2.1 pyxis 2ndary bus scan

Pete Wyckoff (pw@dancer.ca.sandia.gov)
Tue, 26 May 1998 14:48:00 -0700


I've had infinite machine check errors on a Dec personal workstation 433a,
which uses the pyxis PCI interface chip. Below are three patches I've needed
for all kernels 2.1.93 -- 2.1.103, but it's the first one which bothers me
the most.

I can't scan the secondary (32-bit) PCI bus during the kernel boot, as it
goes into an infinite loop of pyxis errors. I've not tried sticking any
devices into the secondary bus, but presumably they won't work if the bus
can't be probed.

diff -urN linux-2.1.103-stock/drivers/pci/pci.c linux-2.1.103/drivers/pci/pci.c
--- linux-2.1.103-stock/drivers/pci/pci.c Thu May 14 18:58:55 1998
+++ linux-2.1.103/drivers/pci/pci.c Tue May 26 07:23:33 1998
@@ -166,6 +166,10 @@
DBG("pci_scan_bus for bus %d\n", bus->number);
bus_last = &bus->devices;
max = bus->secondary;
+ if (bus->number == 1) {
+ printk("pci_scan_bus 1, returning nop %d\n", max);
+ return max;
+ }
for (devfn = 0; devfn < 0xff; ++devfn) {
if (PCI_FUNC(devfn) && !is_multi) {
/* not a multi-function device */

These other three changes may have already been visited on this list:
1. Bash syntax ">&" incompatibility.
2. Presence of "," in "-Wa,-m21164a" destroys make dependcies, forcing
a complete recompile every time.
3. Modules for PCI devices need the dynamic symbol PYXIS_DMA_WIN_BASE to
be exported from the kernel. Only applies to those using the SRM setup.

diff -urN linux-2.1.103-stock/arch/alpha/Makefile linux-2.1.103/arch/alpha/Makefile
--- linux-2.1.103-stock/arch/alpha/Makefile Fri May 8 00:09:20 1998
+++ linux-2.1.103/arch/alpha/Makefile Tue May 26 07:28:53 1998
@@ -32,14 +32,16 @@

# determine if we can use the BWX instructions with GAS
$(shell rm -f ./GAS_VER)
-$(shell $(AS) --version >& ./GAS_VER)
+#$(shell $(AS) --version >& ./GAS_VER)
+$(shell $(AS) --version 2>&1 > ./GAS_VER)
OLD_GAS := $(shell if cat ./GAS_VER | grep 'version 2.7' > /dev/null; then echo yes; else echo no; fi)
$(shell rm -f ./GAS_VER)

ifneq ($(OLD_GAS),yes)
# if PYXIS, then enable use of BWIO space
ifeq ($(CONFIG_ALPHA_PYXIS),y)
- CFLAGS := $(CFLAGS) -Wa,-m21164a -DBWX_USABLE -DBWIO_ENABLED
+# CFLAGS := $(CFLAGS) -Wa,-m21164a -DBWX_USABLE -DBWIO_ENABLED
+ CFLAGS := $(CFLAGS) -DBWX_USABLE -DBWIO_ENABLED
endif
endif

diff -urN linux-2.1.103-stock/arch/alpha/kernel/alpha_ksyms.c linux-2.1.103/arch/alpha/kernel/alpha_ksyms.c
--- linux-2.1.103-stock/arch/alpha/kernel/alpha_ksyms.c Fri May 8 00:23:41 1998
+++ linux-2.1.103/arch/alpha/kernel/alpha_ksyms.c Tue May 26 11:28:56 1998
@@ -121,6 +121,10 @@
EXPORT_SYMBOL(alpha_fp_emul_imprecise);
#endif

+#if defined(CONFIG_ALPHA_PYXIS) && defined(CONFIG_ALPHA_SRM_SETUP)
+EXPORT_SYMBOL(PYXIS_DMA_WIN_BASE);
+#endif
+
/*
* The following are specially called from the uaccess assembly stubs.
*/

Any ideas how to fix the pyxis bus? It does work as advertised in 2.0.33
(heavily patched for alpha, and pyxis).

-- Pete
-----------------------------------------------------
Pete Wyckoff | wyckoff@ca.sandia.gov
Sandia National Laboratories | 510 294 3503 (voice)
MS 9011, P.O. Box 969 | 510 294 1225 (fax)
Livermore, CA 94551 |