Module Name: src
Committed By: jdc
Date: Wed Dec 30 09:16:17 UTC 2015
Modified Files:
src/sys/arch/sparc64/sparc64: ofw_machdep.c
Log Message:
Restrict the check for fully specified interrupts to machines with psycho
controllers only, and adjust comments to note this.
See also the mail thread starting at:
http://mail-index.NetBSD.org/port-sparc64/2015/12/03/msg002488.html
To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/sparc64/sparc64/ofw_machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/sparc64/sparc64/ofw_machdep.c
diff -u src/sys/arch/sparc64/sparc64/ofw_machdep.c:1.44 src/sys/arch/sparc64/sparc64/ofw_machdep.c:1.45
--- src/sys/arch/sparc64/sparc64/ofw_machdep.c:1.44 Mon Mar 2 14:17:06 2015
+++ src/sys/arch/sparc64/sparc64/ofw_machdep.c Wed Dec 30 09:16:17 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: ofw_machdep.c,v 1.44 2015/03/02 14:17:06 nakayama Exp $ */
+/* $NetBSD: ofw_machdep.c,v 1.45 2015/12/30 09:16:17 jdc Exp $ */
/*
* Copyright (C) 1996 Wolfgang Solfrank.
@@ -34,7 +34,7 @@
#include "opt_multiprocessor.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.44 2015/03/02 14:17:06 nakayama Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.45 2015/12/30 09:16:17 jdc Exp $");
#include <sys/param.h>
#include <sys/buf.h>
@@ -738,22 +738,22 @@ OF_mapintr(int node, int *interrupt, int
int phc_node;
int rc = -1;
+ phc_node = find_pci_host_node(node);
+
/*
- * Don't try to map interrupts for onboard devices, or if the
- * interrupt is already fully specified.
- * XXX This should be done differently (i.e. by matching
- * the node name) - but we need access to a machine where
- * a change is testable - hence the printf below.
+ * On machines with psycho PCI controllers, we don't need to map
+ * interrupts if they are already fully specified (0x20 to 0x3f
+ * for onboard devices and IGN 0x7c0 for psycho0/psycho1).
*/
if (*interrupt & 0x20 || *interrupt & 0x7c0) {
- char name[40];
-
- OF_getprop(node, "name", &name, sizeof(name));
- printf("\nATTENTION: if you see this message, please mail "
- "the output of \"dmesg\" and \"ofctl -p\" to "
- "[email protected]!\n"
- "Not mapping interrupt for node %s (%x)\n", name, node);
- return validlen;
+ char model[40];
+
+ if (OF_getprop(phc_node, "model", &model, sizeof(model)) > 10
+ && !strcmp(model, "SUNW,psycho")) {
+ DPRINTF(("OF_mapintr: interrupt %x already mapped\n",
+ *interrupt));
+ return validlen;
+ }
}
/*
@@ -775,8 +775,6 @@ OF_mapintr(int node, int *interrupt, int
return (-1);
}
- phc_node = find_pci_host_node(node);
-
while (node) {
#ifdef DEBUG
char name[40];