Lines Matching refs:cmi
88 typedef struct cmi { struct
89 struct cmi *cmi_next; argument
90 struct cmi *cmi_prev; argument
116 #define CMI_OPS(cmi) (cmi)->cmi_ops argument
117 #define CMI_OP_PRESENT(cmi, op) ((cmi) && CMI_OPS(cmi)->op != NULL) argument
125 cmi_link(cmi_t *cmi) in cmi_link() argument
129 cmi->cmi_prev = NULL; in cmi_link()
130 cmi->cmi_next = cmi_list; in cmi_link()
132 cmi_list->cmi_prev = cmi; in cmi_link()
133 cmi_list = cmi; in cmi_link()
137 cmi_unlink(cmi_t *cmi) in cmi_unlink() argument
140 ASSERT(cmi->cmi_refcnt == 0); in cmi_unlink()
142 if (cmi->cmi_prev != NULL) in cmi_unlink()
143 cmi->cmi_prev = cmi->cmi_next; in cmi_unlink()
145 if (cmi->cmi_next != NULL) in cmi_unlink()
146 cmi->cmi_next->cmi_prev = cmi->cmi_prev; in cmi_unlink()
148 if (cmi_list == cmi) in cmi_unlink()
149 cmi_list = cmi->cmi_next; in cmi_unlink()
158 cmi_hold(cmi_t *cmi) in cmi_hold() argument
163 cmi->cmi_modp->mod_ref++; in cmi_hold()
165 cmi->cmi_refcnt++; in cmi_hold()
169 cmi_rele(cmi_t *cmi) in cmi_rele() argument
174 cmi->cmi_modp->mod_ref--; in cmi_rele()
177 if (--cmi->cmi_refcnt == 0) { in cmi_rele()
178 cmi_unlink(cmi); in cmi_rele()
179 kmem_free(cmi, sizeof (cmi_t)); in cmi_rele()
209 cmi_t *cmi; in cmi_load_modctl() local
214 for (cmi = cmi_list; cmi != NULL; cmi = cmi->cmi_next) { in cmi_load_modctl()
215 if (cmi->cmi_modp == modp) in cmi_load_modctl()
216 return (cmi); in cmi_load_modctl()
246 cmi = kmem_zalloc(sizeof (*cmi), KM_SLEEP); in cmi_load_modctl()
247 cmi->cmi_ops = ops; in cmi_load_modctl()
248 cmi->cmi_modp = modp; in cmi_load_modctl()
250 cmi_link(cmi); in cmi_load_modctl()
252 return (cmi); in cmi_load_modctl()
297 cmi_t *cmi = NULL; in cmi_search_list() local
303 cmi = HDL2CMI(dhdl); in cmi_search_list()
307 return (cmi); in cmi_search_list()
314 cmi_t *cmi; in cmi_load_module() local
326 if ((cmi = cmi_search_list(hdl, match)) != NULL) { in cmi_load_module()
327 cmi_hold(cmi); in cmi_load_module()
328 return (cmi); in cmi_load_module()
341 cmi = cmi_load_modctl(modp); in cmi_load_module()
342 if (cmi) in cmi_load_module()
343 cmi_hold(cmi); in cmi_load_module()
346 return (cmi); in cmi_load_module()
355 cmi_t *cmi; in cmi_load_specific() local
364 if ((cmi = cmi_load_module(hdl, i, &suffixlevel)) == NULL) in cmi_load_specific()
372 if ((err = cmi->cmi_ops->cmi_init(hdl, datap)) == 0) { in cmi_load_specific()
376 cmi->cmi_modp->mod_modname, in cmi_load_specific()
380 return (cmi); in cmi_load_specific()
384 cmi->cmi_modp->mod_modname, in cmi_load_specific()
394 cmi_rele(cmi); in cmi_load_specific()
409 cmi_t *cmi; in cmi_load_generic() local
419 cmi = cmi_load_modctl(modp); in cmi_load_generic()
420 if (cmi) in cmi_load_generic()
421 cmi_hold(cmi); in cmi_load_generic()
424 if (cmi == NULL) in cmi_load_generic()
427 if ((err = cmi->cmi_ops->cmi_init(hdl, datap)) != 0) { in cmi_load_generic()
431 cmi_rele(cmi); in cmi_load_generic()
435 return (cmi); in cmi_load_generic()
442 cmi_t *cmi = NULL; in cmi_init() local
462 cmi = cmi_load_specific(hdl, &data); in cmi_init()
464 if (cmi == NULL && (cmi = cmi_load_generic(hdl, &data)) == NULL) { in cmi_init()
472 cmi_hdl_setcmi(hdl, cmi, data); in cmi_init()
490 cmi_t *cmi = HDL2CMI(hdl); in cmi_fini() local
495 if (CMI_OP_PRESENT(cmi, cmi_fini)) in cmi_fini()
496 CMI_OPS(cmi)->cmi_fini(hdl); in cmi_fini()
509 cmi_t *cmi; in cmi_post_startup() local
515 cmi = HDL2CMI(hdl); in cmi_post_startup()
517 if (CMI_OP_PRESENT(cmi, cmi_post_startup)) in cmi_post_startup()
518 CMI_OPS(cmi)->cmi_post_startup(hdl); in cmi_post_startup()
533 cmi_t *cmi; in cmi_post_mpstartup() local
539 cmi = HDL2CMI(hdl); in cmi_post_mpstartup()
541 if (CMI_OP_PRESENT(cmi, cmi_post_mpstartup)) in cmi_post_mpstartup()
542 CMI_OPS(cmi)->cmi_post_mpstartup(hdl); in cmi_post_mpstartup()
550 cmi_t *cmi = HDL2CMI(hdl); in cmi_faulted_enter() local
555 if (CMI_OP_PRESENT(cmi, cmi_faulted_enter)) in cmi_faulted_enter()
556 CMI_OPS(cmi)->cmi_faulted_enter(hdl); in cmi_faulted_enter()
562 cmi_t *cmi = HDL2CMI(hdl); in cmi_faulted_exit() local
567 if (CMI_OP_PRESENT(cmi, cmi_faulted_exit)) in cmi_faulted_exit()
568 CMI_OPS(cmi)->cmi_faulted_exit(hdl); in cmi_faulted_exit()
574 cmi_t *cmi; in cmi_mca_init() local
579 cmi = HDL2CMI(hdl); in cmi_mca_init()
581 if (CMI_OP_PRESENT(cmi, cmi_mca_init)) in cmi_mca_init()
582 CMI_OPS(cmi)->cmi_mca_init(hdl); in cmi_mca_init()
684 cmi_t *cmi; in cmi_mca_trap() local
700 (cmi = HDL2CMI(hdl)) == NULL || in cmi_mca_trap()
701 !CMI_OP_PRESENT(cmi, cmi_mca_trap)) { in cmi_mca_trap()
715 disp = CMI_OPS(cmi)->cmi_mca_trap(hdl, rp); in cmi_mca_trap()
758 cmi_t *cmi = HDL2CMI(hdl); in cmi_hdl_poke() local
760 if (!CMI_OP_PRESENT(cmi, cmi_hdl_poke)) in cmi_hdl_poke()
763 CMI_OPS(cmi)->cmi_hdl_poke(hdl); in cmi_hdl_poke()
771 cmi_t *cmi; in cmi_cmci_trap() local
778 (cmi = HDL2CMI(hdl)) == NULL || in cmi_cmci_trap()
779 !CMI_OP_PRESENT(cmi, cmi_cmci_trap)) { in cmi_cmci_trap()
792 CMI_OPS(cmi)->cmi_cmci_trap(hdl); in cmi_cmci_trap()
930 cmi_t *cmi = cmi_hdl_getcmi(hdl); in cmi_hdl_msrinject() local
933 if (!CMI_OP_PRESENT(cmi, cmi_msrinject)) in cmi_hdl_msrinject()
937 rc = CMI_OPS(cmi)->cmi_msrinject(hdl, regs, nregs, force); in cmi_hdl_msrinject()
953 cmi_t *cmi; in cmi_panic_callback() local
958 cmi = cmi_hdl_getcmi(hdl); in cmi_panic_callback()
959 if (CMI_OP_PRESENT(cmi, cmi_panic_callback)) in cmi_panic_callback()
960 CMI_OPS(cmi)->cmi_panic_callback(); in cmi_panic_callback()
969 cmi_t *cmi = cmi_hdl_getcmi(hdl); in cmi_hdl_chipident() local
971 if (!CMI_OP_PRESENT(cmi, cmi_ident)) in cmi_hdl_chipident()
974 return (CMI_OPS(cmi)->cmi_ident(hdl)); in cmi_hdl_chipident()