The problem is that the lca gives totally bogus intline values that
aren't 255; so the MI code thinks they are valid & never calls the 
platform specific inter_route code to correct them.

Please try the appended fix, which is basically what we do on x86 SMP.

Matt Dodd said he had a better idea, but it doesn't look like he had
time to implement it.  Mike Smith suggested it, and if it works for you,
I'll commit it.


Andrew Gallatin, Sr Systems Programmer
Duke University                         Email: [EMAIL PROTECTED]
Department of Computer Science          Phone: (919) 660-6590

Index: alpha/pci//lca_pci.c
RCS file: /home/ncvs/src/sys/alpha/pci/lca_pci.c,v
retrieving revision 1.9
diff -u -r1.9 lca_pci.c
--- alpha/pci//lca_pci.c        2000/12/08 22:11:23     1.9
+++ alpha/pci//lca_pci.c        2001/03/16 21:38:02
@@ -34,6 +34,8 @@
 #include <machine/bus.h>
 #include <sys/rman.h>
 #include <pci/pcivar.h>
+#include <pci/pcireg.h>
+#include <machine/cpuconf.h>
 #include <machine/swiz.h>
 #include <machine/md_var.h>
@@ -134,6 +136,12 @@
 lca_pcib_read_config(device_t dev, u_int b, u_int s, u_int f,
                     u_int reg, int width)
+       if ((reg == PCIR_INTLINE) && (width == 1)) {
+               int pin;
+               pin = lca_pcib_read_config(dev, b, s, f, PCIR_INTPIN, 1);
+               return (platform.pci_intr_route(NULL, dev, pin));
+       }
        switch (width) {
        case 1:
                CFGREAD(b, s, f, reg, BYTE, u_int8_t);

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to