Module Name:    src
Committed By:   cliff
Date:           Fri Jan 29 00:22:53 UTC 2010

Modified Files:
        src/sys/arch/mips/rmi [matt-nb5-mips64]: rmixl_cpu.c

Log Message:
- avoid cpu_wakeup callback if running on PSB_TYPE_DELL firmware


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/arch/mips/rmi/rmixl_cpu.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/mips/rmi/rmixl_cpu.c
diff -u src/sys/arch/mips/rmi/rmixl_cpu.c:1.1.2.3 src/sys/arch/mips/rmi/rmixl_cpu.c:1.1.2.4
--- src/sys/arch/mips/rmi/rmixl_cpu.c:1.1.2.3	Sun Jan 24 05:39:57 2010
+++ src/sys/arch/mips/rmi/rmixl_cpu.c	Fri Jan 29 00:22:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: rmixl_cpu.c,v 1.1.2.3 2010/01/24 05:39:57 cliff Exp $	*/
+/*	$NetBSD: rmixl_cpu.c,v 1.1.2.4 2010/01/29 00:22:53 cliff Exp $	*/
 
 /*
  * Copyright 2002 Wasabi Systems, Inc.
@@ -38,7 +38,7 @@
 #include "locators.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rmixl_cpu.c,v 1.1.2.3 2010/01/24 05:39:57 cliff Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rmixl_cpu.c,v 1.1.2.4 2010/01/29 00:22:53 cliff Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -92,8 +92,20 @@
 #ifdef MULTIPROCESSOR
 	} else {
 		struct pglist pglist;
+		rmixlfw_psb_type_t psb_type = rmixl_configuration.rc_psb_type;
 		int error;
 
+		switch (psb_type) {
+		case PSB_TYPE_RMI:
+			break;
+		case PSB_TYPE_DELL:
+			/* FALLTHROUGH */
+		default:
+			aprint_error(": psb type=%s cpu_wakeup unsupported\n",
+				rmixlfw_psb_type_name(psb_type));
+			return;
+		}
+ 
 		/*
 		 * Grab a page from the first 256MB to use to store
 		 * exception vectors and cpu_info for this cpu.
@@ -156,7 +168,7 @@
 printf("%s: wip %p\n", __func__, wip);
 
 	llk = (__cpu_simple_lock_t *)(intptr_t)wip->loader_lock;
-printf("%s: llk %p\n", __func__, llk);
+printf("%s: llk %p: %#x\n", __func__, llk, *llk);
 
 	/* XXX WTF */
 	xflag = (volatile uint32_t *)(intptr_t)(wip->loader_lock + 0x2c);
@@ -183,6 +195,7 @@
 printf("%s: maskp %p\n", __func__, maskp);
 
 	__cpu_simple_lock(llk);
+printf("%s: llk %p: %#x\n", __func__, llk, *llk);
 
 	wip->entry.addr = addr;
 	wip->entry.args = 0;
@@ -202,6 +215,7 @@
 	RMIXL_IOREG_WRITE(RMIXL_PIC_IPIBASE, ipi);
 
 	__cpu_simple_unlock(llk);
+printf("%s: llk %p: %#x\n", __func__, llk, *llk);
 
 	Debugger();
 }

Reply via email to