Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Apr 2001 17:41:45 -0400 (EDT)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        Bernd Walter <ticso@mail.cicely.de>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Funny Interrupt settings on AXPpci33 (fwd)
Message-ID:  <15048.61977.954793.801365@grasshopper.cs.duke.edu>
In-Reply-To: <Pine.LNX.4.21.0104021434370.3303-100000@zeppo.feral.com>
References:  <Pine.LNX.4.21.0104021434370.3303-100000@zeppo.feral.com>

next in thread | previous in thread | raw e-mail | index | archive | help


Bernd,

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.

Drew

------------------------------------------------------------------------------
Andrew Gallatin, Sr Systems Programmer	http://www.cs.duke.edu/~gallatin
Duke University				Email: gallatin@cs.duke.edu
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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15048.61977.954793.801365>