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/