Lines Matching defs:dimm

73 cmd_dimm_fru(cmd_dimm_t *dimm)
75 return (dimm->dimm_asru_nvl);
79 cmd_dimm_create_fault(fmd_hdl_t *hdl, cmd_dimm_t *dimm, const char *fltnm,
91 if (strstr(dimm->dimm_unum, "BR") == NULL) {
93 dimm->dimm_asru_nvl, dimm->dimm_asru_nvl, NULL);
95 nvlfru = cmd_mem2hc(hdl, dimm->dimm_asru_nvl);
97 dimm->dimm_asru_nvl, nvlfru, NULL);
100 return (cmd_fault_add_location(hdl, flt, dimm->dimm_unum));
102 return (cmd_nvl_create_fault(hdl, fltnm, cert, dimm->dimm_asru_nvl,
103 dimm->dimm_asru_nvl, NULL));
108 cmd_dimm_free(fmd_hdl_t *hdl, cmd_dimm_t *dimm, int destroy)
110 cmd_case_t *cc = &dimm->dimm_case;
129 while ((q = cmd_list_next(&dimm->mq_root[i])) != NULL) {
146 cmd_list_delete(&dimm->mq_root[i], q);
151 if (dimm->dimm_bank != NULL)
152 cmd_bank_remove_dimm(hdl, dimm->dimm_bank, dimm);
155 branch = cmd_branch_lookup_by_unum(hdl, dimm->dimm_unum);
157 cmd_branch_remove_dimm(hdl, branch, dimm);
160 cmd_fmri_fini(hdl, &dimm->dimm_asru, destroy);
163 fmd_buf_destroy(hdl, NULL, dimm->dimm_bufname);
165 cmd_list_delete(&cmd.cmd_dimms, dimm);
166 fmd_hdl_free(hdl, dimm, sizeof (cmd_dimm_t));
170 cmd_dimm_destroy(fmd_hdl_t *hdl, cmd_dimm_t *dimm)
173 fmd_stat_destroy(hdl, 1, &(dimm->dimm_retstat));
174 cmd_dimm_free(hdl, dimm, FMD_B_TRUE);
180 cmd_dimm_t *dimm;
182 for (dimm = cmd_list_next(&cmd.cmd_dimms); dimm != NULL;
183 dimm = cmd_list_next(dimm)) {
184 if (strcmp(dimm->dimm_unum, unum) == 0)
185 return (dimm);
192 dimm_attach_to_bank(fmd_hdl_t *hdl, cmd_dimm_t *dimm)
199 dimm->dimm_asru_nvl)) {
200 cmd_bank_add_dimm(hdl, bank, dimm);
209 cmd_dimm_t *dimm;
244 dimm = fmd_hdl_zalloc(hdl, sizeof (cmd_dimm_t), FMD_SLEEP);
245 dimm->dimm_nodetype = CMD_NT_DIMM;
246 dimm->dimm_version = CMD_DIMM_VERSION;
247 dimm->dimm_phys_addr_low = ULLONG_MAX;
248 dimm->dimm_phys_addr_hi = 0;
249 dimm->dimm_syl_error = USHRT_MAX;
251 cmd_bufname(dimm->dimm_bufname, sizeof (dimm->dimm_bufname), "dimm_%s",
253 cmd_fmri_init(hdl, &dimm->dimm_asru, fmri, "dimm_asru_%s", unum);
257 (void) nvlist_lookup_string(dimm->dimm_asru_nvl, FM_FMRI_MEM_UNUM,
258 (char **)&dimm->dimm_unum);
260 dimm_attach_to_bank(hdl, dimm);
262 cmd_mem_retirestat_create(hdl, &dimm->dimm_retstat, dimm->dimm_unum, 0,
265 cmd_list_append(&cmd.cmd_dimms, dimm);
266 cmd_dimm_dirty(hdl, dimm);
268 return (dimm);
274 cmd_dimm_t *dimm;
282 dimm = dimm_lookup_by_unum(unum);
284 if (dimm != NULL && !fmd_nvl_fmri_present(hdl, dimm->dimm_asru_nvl)) {
290 fmd_hdl_debug(hdl, "dimm_lookup: discarding old dimm\n");
292 if (dimm->dimm_bank != NULL)
293 cmd_bank_destroy(hdl, dimm->dimm_bank);
294 cmd_dimm_destroy(hdl, dimm);
299 return (dimm);
352 cmd_dimm_t *dimm;
359 dimm = fmd_hdl_zalloc(hdl, sizeof (cmd_dimm_t), FMD_SLEEP);
360 bcopy(pers, dimm, sizeof (cmd_dimm_pers_t));
362 return (dimm);
368 cmd_dimm_t *dimm;
370 for (dimm = cmd_list_next(&cmd.cmd_dimms); dimm != NULL;
371 dimm = cmd_list_next(dimm)) {
372 if (strcmp(dimm->dimm_bufname, ptr->ptr_name) == 0)
376 if (dimm == NULL) {
380 fmd_hdl_debug(hdl, "restoring dimm from %s\n", ptr->ptr_name);
383 fmd_hdl_abort(hdl, "dimm referenced by case %s does "
389 "dimm buffer referenced by case %s "
395 if ((dimm = cmd_buf_read(hdl, NULL, ptr->ptr_name,
397 fmd_hdl_abort(hdl, "failed to read dimm buf %s",
402 dimm->dimm_version);
404 if (CMD_DIMM_VERSIONED(dimm)) {
405 switch (dimm->dimm_version) {
407 dimm = dimm_v1tov2(hdl, (cmd_dimm_1_t *)dimm,
411 dimm = dimm_wrapv2(hdl, (cmd_dimm_pers_t *)dimm,
416 "for dimm state referenced by case %s.\n",
417 dimm->dimm_version, fmd_case_uuid(hdl, cp));
421 dimm = dimm_v0tov2(hdl, (cmd_dimm_0_t *)dimm, dimmsz);
427 cmd_dimm_dirty(hdl, dimm);
430 cmd_fmri_restore(hdl, &dimm->dimm_asru);
432 if ((errno = nvlist_lookup_string(dimm->dimm_asru_nvl,
433 FM_FMRI_MEM_UNUM, (char **)&dimm->dimm_unum)) != 0)
436 dimm_attach_to_bank(hdl, dimm);
438 cmd_mem_retirestat_create(hdl, &dimm->dimm_retstat,
439 dimm->dimm_unum, dimm->dimm_nretired, CMD_DIMM_STAT_PREFIX);
441 cmd_list_append(&cmd.cmd_dimms, dimm);
446 fmd_hdl_debug(hdl, "recovering from out of order dimm ptr\n");
450 cmd_mem_case_restore(hdl, &dimm->dimm_case, cp, "dimm",
451 dimm->dimm_unum);
458 return (dimm);
464 cmd_dimm_t *dimm, *next;
466 for (dimm = cmd_list_next(&cmd.cmd_dimms); dimm != NULL; dimm = next) {
467 next = cmd_list_next(dimm);
469 if (!fmd_nvl_fmri_present(hdl, dimm->dimm_asru_nvl))
470 cmd_dimm_destroy(hdl, dimm);
475 cmd_dimm_dirty(fmd_hdl_t *hdl, cmd_dimm_t *dimm)
477 if (fmd_buf_size(hdl, NULL, dimm->dimm_bufname) !=
479 fmd_buf_destroy(hdl, NULL, dimm->dimm_bufname);
481 /* No need to rewrite the FMRIs in the dimm - they don't change */
482 fmd_buf_write(hdl, NULL, dimm->dimm_bufname, &dimm->dimm_pers,
495 cmd_dimm_t *dimm;
497 while ((dimm = cmd_list_next(&cmd.cmd_dimms)) != NULL)
498 cmd_dimm_free(hdl, dimm, FMD_B_FALSE);
503 cmd_dimm_save_symbol_error(cmd_dimm_t *dimm, uint16_t upos)
509 if (cmd_same_datapath_dimms(dimm, d))
515 cmd_dimm_check_symbol_error(cmd_dimm_t *dimm, uint16_t synd)
525 if (cmd_same_datapath_dimms(dimm, d) &&