78 nvlist_t *
79 cmd_dimm_create_fault(fmd_hdl_t *hdl, cmd_dimm_t *dimm, const char *fltnm,
80 uint_t cert)
81 {
82 #ifdef sun4v
83 nvlist_t *flt, *nvlfru;
84 /*
85 * Do NOT issue hc scheme FRU FMRIs for ultraSPARC-T1 platforms.
86 * The SP will misinterpret the FRU. Instead, reuse the ASRU FMRI
87 *
88 * Use the BR string as a distinguisher. BR (branch) is only
89 * present in ultraSPARC-T2/T2plus DIMM unums
90 */
91 if (strstr(dimm->dimm_unum, "BR") == NULL) {
92 flt = cmd_nvl_create_fault(hdl, fltnm, cert,
93 dimm->dimm_asru_nvl, dimm->dimm_asru_nvl, NULL);
94 } else {
95 nvlfru = cmd_mem2hc(hdl, dimm->dimm_asru_nvl);
96 flt = cmd_nvl_create_fault(hdl, fltnm, cert,
97 dimm->dimm_asru_nvl, nvlfru, NULL);
98 if (nvlfru != NULL)
99 nvlist_free(nvlfru);
100 }
101 return (cmd_fault_add_location(hdl, flt, dimm->dimm_unum));
102 #else
103 return (cmd_nvl_create_fault(hdl, fltnm, cert, dimm->dimm_asru_nvl,
104 dimm->dimm_asru_nvl, NULL));
105 #endif /* sun4v */
106 }
107
108 static void
109 cmd_dimm_free(fmd_hdl_t *hdl, cmd_dimm_t *dimm, int destroy)
110 {
111 cmd_case_t *cc = &dimm->dimm_case;
112 int i;
113 cmd_mq_t *q;
114 tstamp_t *tsp, *next;
115
116 #ifdef sun4v
117 cmd_branch_t *branch;
118 #endif
|
78 nvlist_t *
79 cmd_dimm_create_fault(fmd_hdl_t *hdl, cmd_dimm_t *dimm, const char *fltnm,
80 uint_t cert)
81 {
82 #ifdef sun4v
83 nvlist_t *flt, *nvlfru;
84 /*
85 * Do NOT issue hc scheme FRU FMRIs for ultraSPARC-T1 platforms.
86 * The SP will misinterpret the FRU. Instead, reuse the ASRU FMRI
87 *
88 * Use the BR string as a distinguisher. BR (branch) is only
89 * present in ultraSPARC-T2/T2plus DIMM unums
90 */
91 if (strstr(dimm->dimm_unum, "BR") == NULL) {
92 flt = cmd_nvl_create_fault(hdl, fltnm, cert,
93 dimm->dimm_asru_nvl, dimm->dimm_asru_nvl, NULL);
94 } else {
95 nvlfru = cmd_mem2hc(hdl, dimm->dimm_asru_nvl);
96 flt = cmd_nvl_create_fault(hdl, fltnm, cert,
97 dimm->dimm_asru_nvl, nvlfru, NULL);
98 nvlist_free(nvlfru);
99 }
100 return (cmd_fault_add_location(hdl, flt, dimm->dimm_unum));
101 #else
102 return (cmd_nvl_create_fault(hdl, fltnm, cert, dimm->dimm_asru_nvl,
103 dimm->dimm_asru_nvl, NULL));
104 #endif /* sun4v */
105 }
106
107 static void
108 cmd_dimm_free(fmd_hdl_t *hdl, cmd_dimm_t *dimm, int destroy)
109 {
110 cmd_case_t *cc = &dimm->dimm_case;
111 int i;
112 cmd_mq_t *q;
113 tstamp_t *tsp, *next;
114
115 #ifdef sun4v
116 cmd_branch_t *branch;
117 #endif
|