Module Name:    src
Committed By:   cliff
Date:           Sun Jan 17 00:11:11 UTC 2010

Added Files:
        src/sys/arch/mips/rmi [matt-nb5-mips64]: rmixl_cpunode.c
            rmixl_cpunodevar.h

Log Message:
cpunode driver represents CPU node in device tree


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1.2.1 src/sys/arch/mips/rmi/rmixl_cpunode.c \
    src/sys/arch/mips/rmi/rmixl_cpunodevar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/sys/arch/mips/rmi/rmixl_cpunode.c
diff -u /dev/null src/sys/arch/mips/rmi/rmixl_cpunode.c:1.1.2.1
--- /dev/null	Sun Jan 17 00:11:11 2010
+++ src/sys/arch/mips/rmi/rmixl_cpunode.c	Sun Jan 17 00:11:11 2010
@@ -0,0 +1,141 @@
+/*	$NetBSD: rmixl_cpunode.c,v 1.1.2.1 2010/01/17 00:11:11 cliff Exp $	*/
+
+/*
+ * Copyright (c) 1994,1995 Mark Brinicombe.
+ * Copyright (c) 1994 Brini.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by Brini.
+ * 4. The name of the company nor the name of the author may be used to
+ *    endorse or promote products derived from this software without specific
+ *    prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * RiscBSD kernel project
+ *
+ * mainbus.c
+ *
+ * cpunode configuration
+ *
+ * Created      : 15/12/94
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: rmixl_cpunode.c,v 1.1.2.1 2010/01/17 00:11:11 cliff Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/conf.h>
+#include <sys/malloc.h>
+#include <sys/device.h>
+
+#include <evbmips/rmixl/autoconf.h>
+#include <mips/rmi/rmixl_cpunodevar.h>
+#include <machine/bus.h>
+#include "locators.h"
+
+static int  cpunode_match(device_t,  cfdata_t, void *);
+static void cpunode_attach(device_t,  device_t,  void *);
+static int  cpunode_print_core(void *, const char *);
+
+CFATTACH_DECL_NEW(cpunode, sizeof(struct cpunode_softc),
+	cpunode_match, cpunode_attach, NULL, NULL);
+
+static int
+cpunode_match(device_t parent, cfdata_t cf, void *aux)
+{
+	struct mainbus_attach_args *ma = aux;
+
+	/* XXX for now attach one node only */
+	if (ma->ma_node != 0)
+		return 0;
+
+	return 1;
+}
+
+static void
+cpunode_attach(device_t parent, device_t self, void *aux)
+{
+	u_int sz;
+	u_int ncores;
+	struct cpunode_softc *sc = device_private(self);
+	struct mainbus_attach_args *ma = aux;
+	struct cpunode_attach_args na;
+
+	aprint_naive("\n");
+	aprint_normal("\n");
+
+	sc->sc_dev = self;
+	sc->sc_node = ma->ma_node;
+	sc->sc_attached = 1;
+
+	switch (mycpu->cpu_cidflags & MIPS_CIDFL_RMI_TYPE) {
+	case CIDFL_RMI_TYPE_XLR:
+	case CIDFL_RMI_TYPE_XLS:
+		/*
+		 * L2 is unified on XLR, XLS
+		 */
+		sz = (size_t)MIPS_CIDFL_RMI_L2SZ(mycpu->cpu_cidflags);
+		aprint_normal("%s: %dKB/32B %d-banked 8-way set associative"
+			" unified L2 cache\n", device_xname(self),
+			sz/1024, sz/(256 * 1024));
+		break;
+	case CIDFL_RMI_TYPE_XLP:
+		/* TBD */
+		break;
+	}
+
+	ncores = MIPS_CIDFL_RMI_NTHREADS(mycpu->cpu_cidflags);
+	aprint_normal("%s: %d %s on node\n", device_xname(self), ncores,
+		ncores == 1 ? "core" : "cores");
+
+	/*
+	 * Attach cpu (RMI thread) devices
+	 */
+	for (int i=0; i < ncores; i++) {
+		na.na_name = "cpucore";
+		na.na_node = ma->ma_node;
+		na.na_core = i;
+		config_found(self, &na, cpunode_print_core);
+	}
+
+	/*
+	 * Attach obio
+	 */
+	na.na_name = "obio";
+	config_found(self, &na, NULL);
+}
+
+static int
+cpunode_print_core(void *aux, const char *pnp)
+{
+	struct cpunode_attach_args *na = aux;
+
+	if (pnp != NULL)
+		aprint_normal("%s:", pnp);
+	aprint_normal(" core %d", na->na_core);
+
+	return (UNCONF);
+}
Index: src/sys/arch/mips/rmi/rmixl_cpunodevar.h
diff -u /dev/null src/sys/arch/mips/rmi/rmixl_cpunodevar.h:1.1.2.1
--- /dev/null	Sun Jan 17 00:11:11 2010
+++ src/sys/arch/mips/rmi/rmixl_cpunodevar.h	Sun Jan 17 00:11:11 2010
@@ -0,0 +1,18 @@
+/*	$NetBSD: rmixl_cpunodevar.h,v 1.1.2.1 2010/01/17 00:11:11 cliff Exp $	*/
+
+#ifndef _ARCH_MIPS_RMI_RMIXL_CPUNODEVAR_H_
+#define _ARCH_MIPS_RMI_RMIXL_CPUNODEVAR_H_
+
+struct cpunode_softc {
+	device_t	sc_dev;
+	bool		sc_attached;
+	u_int		sc_node;
+};
+
+struct cpunode_attach_args {
+	const char     *na_name;
+	int		na_node;
+	int		na_core;
+};
+
+#endif	/* _ARCH_MIPS_RMI_RMIXL_CPUNODEVAR_H_ */

Reply via email to