summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2009-05-02 21:26:06 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2009-05-02 21:26:06 +0000
commitb192fbb6a6c5837c6a44913ea1d86f57742a1375 (patch)
tree41e3ec8247f6d2b3447f96611744032f7fc162c8
parent23afab51bc73a7d739f5b78a9932172ac5e6295e (diff)
More KL configuration structures.
-rw-r--r--sys/arch/sgi/include/mnode.h15
-rw-r--r--sys/arch/sgi/sgi/sginode.c26
2 files changed, 35 insertions, 6 deletions
diff --git a/sys/arch/sgi/include/mnode.h b/sys/arch/sgi/include/mnode.h
index e0ed9a39329..b5bd754b161 100644
--- a/sys/arch/sgi/include/mnode.h
+++ b/sys/arch/sgi/include/mnode.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: mnode.h,v 1.1 2009/04/13 21:17:54 miod Exp $ */
+/* $OpenBSD: mnode.h,v 1.2 2009/05/02 21:26:00 miod Exp $ */
/*
* Copyright (c) 2004 Opsycon AB (www.opsycon.se / www.opsycon.com)
@@ -292,6 +292,19 @@ typedef struct klmembnk_n_s {
int16_t membnk_attr;
} klmembnk_n_t;
+/* KLSTRUCT_XBOW: Xbow */
+#define MAX_XBOW_LINKS 16
+typedef struct klxbow_s {
+ klinfo_t xbow_info;
+ klport_t xbow_port_info[MAX_XBOW_LINKS]; /* Module number */
+ int xbow_hub_master_link;
+} klxbow_t;
+
+/* xbow_port_info.port_flag bits */
+#define XBOW_PORT_IO 0x01
+#define XBOW_PORT_HUB 0x02
+#define XBOW_PORT_ENABLE 0x04
+
/* KLSTRUCT_IOC3: Basic I/O Controller */
typedef struct klioc3_s {
klinfo_t ioc3_info;
diff --git a/sys/arch/sgi/sgi/sginode.c b/sys/arch/sgi/sgi/sginode.c
index 358b26f8219..a7f5e1423a2 100644
--- a/sys/arch/sgi/sgi/sginode.c
+++ b/sys/arch/sgi/sgi/sginode.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sginode.c,v 1.2 2009/04/15 18:47:15 miod Exp $ */
+/* $OpenBSD: sginode.c,v 1.3 2009/05/02 21:26:05 miod Exp $ */
/*
* Copyright (c) 2008, 2009 Miodrag Vallat.
*
@@ -110,12 +110,13 @@ kl_do_boardinfo(lboard_t *boardinfo)
klhub_t *hubcomp;
klmembnk_m_t *memcomp_m;
klmembnk_n_t *memcomp_n;
+ klxbow_t *xbowcomp;
struct cpuinfo *cpu;
int i, j;
- DB_PRF(("board type %x slot %x nasid %x components %d\n",
+ DB_PRF(("board type %x slot %x nasid %x nic %p components %d\n",
boardinfo->brd_type, boardinfo->brd_slot, boardinfo->brd_nasid,
- boardinfo->brd_numcompts));
+ boardinfo->brd_nic, boardinfo->brd_numcompts));
for (i = 0; i < boardinfo->brd_numcompts; i++) {
comp = IP27_UNCAC_ADDR(klinfo_t *, 0, boardinfo->brd_compts[i]);
@@ -123,8 +124,9 @@ kl_do_boardinfo(lboard_t *boardinfo)
switch(comp->struct_type) {
case KLSTRUCT_CPU:
cpucomp = (klcpu_t *)comp;
- DB_PRF(("\tcpu type %x %dMhz cache %dMB speed %dMhz\n",
- cpucomp->cpu_prid, cpucomp->cpu_speed,
+ DB_PRF(("\tcpu type %x/%x %dMhz cache %dMB speed %dMhz\n",
+ cpucomp->cpu_prid, cpucomp->cpu_fpirr,
+ cpucomp->cpu_speed,
cpucomp->cpu_scachesz, cpucomp->cpu_scachespeed));
if (nextcpu < MAX_CPUS) {
@@ -181,6 +183,20 @@ kl_do_boardinfo(lboard_t *boardinfo)
break;
+ case KLSTRUCT_XBOW:
+ xbowcomp = (klxbow_t *)comp;
+ DB_PRF(("\txbow hub master link %d\n",
+ xbowcomp->xbow_hub_master_link));
+ for (j = 0; j < MAX_XBOW_LINKS; j++) {
+ if (xbowcomp->xbow_port_info[j].port_flag &
+ XBOW_PORT_ENABLE)
+ DB_PRF(("\t\twidget %d nasid %d flg %u\n",
+ j,
+ xbowcomp->xbow_port_info[j].port_nasid,
+ xbowcomp->xbow_port_info[j].port_flag));
+ }
+ break;
+
default:
DB_PRF(("\tcomponent widget %d type %d\n",
comp->widid, comp->struct_type));