Lines Matching refs:hdl
55 iaddr_gen(struct mcamd_hdl *hdl, mcamd_node_t *mc, uint64_t pa, in iaddr_gen() argument
61 if (!mcamd_get_numprops(hdl, in iaddr_gen()
69 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "iaddr_gen: failed to " in iaddr_gen()
71 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in iaddr_gen()
80 return (mcamd_set_errno(hdl, EMCAMD_NOADDR)); in iaddr_gen()
83 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "iaddr_gen: PA 0x%llx not " in iaddr_gen()
86 return (mcamd_set_errno(hdl, EMCAMD_NOADDR)); in iaddr_gen()
100 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "iaddr_gen: dram hole " in iaddr_gen()
111 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "Invalid intlven " in iaddr_gen()
113 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in iaddr_gen()
117 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "iaddr_gen: " in iaddr_gen()
121 return (mcamd_set_errno(hdl, EMCAMD_NOADDR)); in iaddr_gen()
136 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "iaddr_gen: PA 0x%llx in range " in iaddr_gen()
151 cs_match(struct mcamd_hdl *hdl, uint64_t iaddr, mcamd_node_t *cs) in cs_match() argument
156 if (!mcamd_get_numprops(hdl, in cs_match()
162 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "cs_match: failed to lookup " in cs_match()
170 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "cs_match: iaddr 0x%llx " in cs_match()
174 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "cs_match: iaddr 0x%llx " in cs_match()
186 cs_sparedto(struct mcamd_hdl *hdl, mcamd_node_t *cs, mcamd_node_t *mc) in cs_sparedto() argument
190 if (!mcamd_get_numprops(hdl, in cs_sparedto()
195 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "cs_sparedto: failed to " in cs_sparedto()
204 for (cs = mcamd_cs_next(hdl, mc, NULL); cs != NULL; in cs_sparedto()
205 cs = mcamd_cs_next(hdl, mc, cs)) { in cs_sparedto()
206 if (!mcamd_get_numprop(hdl, cs, MCAMD_PROP_NUM, &tmpcsnum)) { in cs_sparedto()
207 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "cs_sparedto: " in cs_sparedto()
216 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "cs_sparedto: cs#%d is " in cs_sparedto()
220 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "cs_sparedto: cs#%d is " in cs_sparedto()
235 unum_fill(struct mcamd_hdl *hdl, mcamd_node_t *cs, int which, in unum_fill() argument
243 if ((mc = mcamd_cs_mc(hdl, cs)) == NULL || in unum_fill()
244 !mcamd_get_numprops(hdl, in unum_fill()
249 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "unum_fill: failed to " in unum_fill()
251 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in unum_fill()
255 !mcamd_get_numprop(hdl, cs, MCAMD_PROP_CSDIMM1, &dimm1) || in unum_fill()
257 !mcamd_get_numprop(hdl, cs, MCAMD_PROP_CSDIMM2, &dimm2)) { in unum_fill()
258 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "unum_fill: failed to " in unum_fill()
260 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in unum_fill()
298 for (dimm = mcamd_dimm_next(hdl, mc, NULL); dimm != NULL; in unum_fill()
299 dimm = mcamd_dimm_next(hdl, mc, dimm)) { in unum_fill()
301 if (!mcamd_get_numprop(hdl, dimm, MCAMD_PROP_NUM, &dnum)) { in unum_fill()
302 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "unum_fill: failed " in unum_fill()
311 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "unum_fill: failed to " in unum_fill()
315 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in unum_fill()
322 (void) mc_pa_to_offset(hdl, mc, cs, iaddr, &unump->unum_offset); in unum_fill()
345 mc_whichdimm(struct mcamd_hdl *hdl, mcamd_node_t *cs, uint64_t pa, in mc_whichdimm() argument
359 if (!mcamd_get_numprops(hdl, in mc_whichdimm()
363 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "mc_whichdimm: failed to " in mc_whichdimm()
365 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in mc_whichdimm()
369 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "mc_whichdimm: found no " in mc_whichdimm()
371 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in mc_whichdimm()
375 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_whichdimm: just one " in mc_whichdimm()
388 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_whichdimm: 64/8 " in mc_whichdimm()
393 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_whichdimm: " in mc_whichdimm()
397 return (mcamd_set_errno(hdl, EMCAMD_INSUFF_RES)); in mc_whichdimm()
404 if (mcamd_cksynd_decode(hdl, synd, &sym, &pat)) { in mc_whichdimm()
409 if (mcamd_cksym_decode(hdl, sym, &lobit, &hibit, &data, in mc_whichdimm()
411 return (mcamd_set_errno(hdl, EMCAMD_SYNDINVALID)); in mc_whichdimm()
414 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_whichdimm: " in mc_whichdimm()
419 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_whichdimm: " in mc_whichdimm()
429 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_whichhdimm: " in mc_whichdimm()
442 mc_bkdg_patounum(struct mcamd_hdl *hdl, mcamd_node_t *mc, uint64_t pa, in mc_bkdg_patounum() argument
464 if (!mcamd_get_numprops(hdl, in mc_bkdg_patounum()
466 mc, MCAMD_PROP_REV, &rev, NULL) || !mcamd_get_cfgregs(hdl, in mc_bkdg_patounum()
470 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "mc_bkdg_patounm: failed " in mc_bkdg_patounum()
472 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in mc_bkdg_patounum()
492 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_bkdg_patounum: " in mc_bkdg_patounum()
496 return (mcamd_set_errno(hdl, EMCAMD_NOADDR)); in mc_bkdg_patounum()
517 return (mcamd_set_errno(hdl, in mc_bkdg_patounum()
524 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_bkdg_patounum: " in mc_bkdg_patounum()
527 return (mcamd_set_errno(hdl, EMCAMD_NOADDR)); in mc_bkdg_patounum()
534 for (cs = mcamd_cs_next(hdl, mc, NULL); cs != NULL; in mc_bkdg_patounum()
535 cs = mcamd_cs_next(hdl, mc, cs)) { in mc_bkdg_patounum()
538 if (!mcamd_get_cfgregs(hdl, in mc_bkdg_patounum()
542 !mcamd_get_numprops(hdl, in mc_bkdg_patounum()
546 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "mc_bkdg_patounm: " in mc_bkdg_patounum()
548 return (mcamd_set_errno(hdl, EMCAMD_TREEINVALID)); in mc_bkdg_patounum()
572 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mc_bkdg_patounum: " in mc_bkdg_patounum()
576 if ((sparecs = cs_sparedto(hdl, cs, mc)) != NULL) in mc_bkdg_patounum()
579 if ((which = mc_whichdimm(hdl, cs, pa, valid_lo, in mc_bkdg_patounum()
589 if (unum_fill(hdl, cs, which, InputAddr, unump, 0) < 0) in mc_bkdg_patounum()
596 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "mc_bkdg_patounum: in range " in mc_bkdg_patounum()
599 return (mcamd_set_errno(hdl, EMCAMD_NOADDR)); in mc_bkdg_patounum()
611 mc_patounum(struct mcamd_hdl *hdl, mcamd_node_t *mc, uint64_t pa, in mc_patounum() argument
626 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "BKDG brute-force method begins\n"); in mc_patounum()
627 bkdgres = mc_bkdg_patounum(hdl, mc, pa, valid_lo, synd, in mc_patounum()
629 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "BKDG brute-force method ends\n"); in mc_patounum()
632 if (iaddr_gen(hdl, mc, pa, &iaddr) < 0) in mc_patounum()
635 for (cs = mcamd_cs_next(hdl, mc, NULL); cs != NULL; in mc_patounum()
636 cs = mcamd_cs_next(hdl, mc, cs)) { in mc_patounum()
637 if (cs_match(hdl, iaddr, cs)) in mc_patounum()
642 return (mcamd_set_errno(hdl, EMCAMD_NOADDR)); in mc_patounum()
651 if ((sparecs = cs_sparedto(hdl, cs, mc)) != NULL) { in mc_patounum()
655 if ((which = mc_whichdimm(hdl, cs, pa, valid_lo, synd, in mc_patounum()
659 if (unum_fill(hdl, cs, which, iaddr, unump, 1) < 0) in mc_patounum()
663 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "bkdgres=%d res=0\n", bkdgres); in mc_patounum()
666 mcamd_dprintf(hdl, MCAMD_DBG_ERR, "BKDG alg failed while " in mc_patounum()
675 mcamd_dprintf(hdl, MCAMD_DBG_ERR, in mc_patounum()
685 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "Result: chip %d mc %d cs %d " in mc_patounum()
693 mcamd_patounum(struct mcamd_hdl *hdl, mcamd_node_t *root, uint64_t pa, in mcamd_patounum() argument
699 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mcamd_patounum: pa=0x%llx, " in mcamd_patounum()
703 mcamd_dprintf(hdl, MCAMD_DBG_FLOW, "mcamd_patounum: require " in mcamd_patounum()
705 return (mcamd_set_errno(hdl, EMCAMD_INSUFF_RES)); in mcamd_patounum()
708 if (!mcamd_synd_validate(hdl, synd, syndtype)) in mcamd_patounum()
709 return (mcamd_set_errno(hdl, EMCAMD_SYNDINVALID)); in mcamd_patounum()
711 for (mc = mcamd_mc_next(hdl, root, NULL); mc != NULL; in mcamd_patounum()
712 mc = mcamd_mc_next(hdl, root, mc)) { in mcamd_patounum()
713 if (mc_patounum(hdl, mc, pa, valid_lo, synd, in mcamd_patounum()
717 if (mcamd_errno(hdl) != EMCAMD_NOADDR) in mcamd_patounum()