Subject: softintr diagnostic incorrect for SUN4?
To: NetBSD port-sparc mailing list <port-sparc@netbsd.org>
From: Julian Coleman <jdc@coris.org.uk>
List: port-sparc
Date: 01/07/2007 15:55:18
The code in sparc/intr.c:intr_establish() contains a check within DIAGNOSTIC
that checks for SUN4 or SUN4C and level 1, 4 or 6. If this is the case, it
panics.
On a 4/300, le0 is at level 6 and esp0 is at level 4 [*], so it's not
possible to boot one with -DDIAGNOSTIC. Does it make sense to take out
the diagnostic for SUN4 as appended (or, maybe completely)?
Thanks,
J
- - 8< - - - - - - - - - - - - - Cut here - - - - - - - - - - - - - >8 - -
Index: sparc/intr.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sparc/sparc/intr.c,v
retrieving revision 1.95
diff -u -r1.95 intr.c
--- sparc/intr.c 7 Jun 2006 22:38:49 -0000 1.95
+++ sparc/intr.c 7 Jan 2007 15:45:46 -0000
@@ -633,8 +633,12 @@
int s = splhigh();
#ifdef DIAGNOSTIC
- if (CPU_ISSUN4 || CPU_ISSUN4C) {
- /* Check reserved softintr slots */
+ if (CPU_ISSUN4C) {
+ /*
+ * Check reserved softintr slots on SUN4C only.
+ * No check for SUN4, as 4/300's have
+ * esp0 at level 4 and le0 at level 6.
+ */
if (level == 1 || level == 4 || level == 6)
panic("intr_establish: reserved softintr level");
}
- - 8< - - - - - - - - - - - - - Cut here - - - - - - - - - - - - - >8 - -
[*] dmesg extracts:
mainbus0 (root): SUN-4/300 series: hostid 230046e3
le0 at obio0 addr 0xf9000000 level 6: address 08:00:20:09:6c:af
esp0 at obio0 addr 0xfa000000 level 4: ESP100A, 24MHz, SCSI ID 7
--
My other computer also runs NetBSD / Sailing at Newbiggin
http://www.netbsd.org/ / http://www.newbigginsailingclub.org/