dimm_topo.c revision aab83bb83be7342f6cfccaed8d5fe0b2f404855d
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#include <sys/mc_intel.h>
#include "nhm_log.h"
#include "intel_nhm.h"
extern char closed_page;
extern char ecc_enabled;
extern char lockstep[MAX_CPU_NODES];
extern char mirror_mode[MAX_CPU_NODES];
extern char spare_channel[MAX_CPU_NODES];
static void
{
char buf[128];
if (sinterleave > 1) {
num);
"dimm-socket-interleave-way-%d", num);
}
if (cinterleave > 1) {
num);
"dimm-channel-interleave-way-%d", num);
}
if (rinterleave > 1) {
num);
"dimm-rank-interleave-way-%d", num);
}
}
static void
{
int num;
int i;
rank_addr = 0;
num = 0;
break;
rway);
num++;
}
}
nvlist_free(newrank[i]);
}
static nvlist_t *
{
uint8_t t;
char sbuf[65];
} else {
}
t = sizeof (nhm_dimm->manufacturer);
sbuf[t] = 0;
}
t = sizeof (nhm_dimm->serial_number);
sbuf[t] = 0;
}
t = sizeof (nhm_dimm->part_number);
sbuf[t] = 0;
}
sbuf[t] = 0;
}
sbuf[t] = 0;
return (newdimm);
}
static void
{
int nd;
uint8_t i, j;
nhm_dimm_t **dimmpp;
KM_SLEEP);
for (i = 0; i < nchannels; i++) {
"redundancy-loss" : "mirror" :
"independent");
nd = 0;
for (j = 0; j < MAX_DIMMS_PER_CHANNEL; j++) {
(uint32_t)j);
nd++;
}
dimmpp++;
}
if (nd) {
(void) nvlist_add_nvlist_array(newchannel[i],
for (j = 0; j < nd; j++)
nvlist_free(dimmlist[j]);
}
}
for (i = 0; i < nchannels; i++)
nvlist_free(newchannel[i]);
}
char *
{
return (NHM_INTERCONNECT);
}
void
inhm_create_nvl(int chip)
{
}