Lines Matching refs:cmi

94 typedef struct cmi {  struct
95 struct cmi *cmi_next; argument
96 struct cmi *cmi_prev; argument
122 #define CMI_OPS(cmi) (cmi)->cmi_ops argument
123 #define CMI_OP_PRESENT(cmi, op) ((cmi) && CMI_OPS(cmi)->op != NULL) argument
131 cmi_link(cmi_t *cmi) in cmi_link() argument
135 cmi->cmi_prev = NULL; in cmi_link()
136 cmi->cmi_next = cmi_list; in cmi_link()
138 cmi_list->cmi_prev = cmi; in cmi_link()
139 cmi_list = cmi; in cmi_link()
143 cmi_unlink(cmi_t *cmi) in cmi_unlink() argument
146 ASSERT(cmi->cmi_refcnt == 0); in cmi_unlink()
148 if (cmi->cmi_prev != NULL) in cmi_unlink()
149 cmi->cmi_prev = cmi->cmi_next; in cmi_unlink()
151 if (cmi->cmi_next != NULL) in cmi_unlink()
152 cmi->cmi_next->cmi_prev = cmi->cmi_prev; in cmi_unlink()
154 if (cmi_list == cmi) in cmi_unlink()
155 cmi_list = cmi->cmi_next; in cmi_unlink()
164 cmi_hold(cmi_t *cmi) in cmi_hold() argument
169 cmi->cmi_modp->mod_ref++; in cmi_hold()
171 cmi->cmi_refcnt++; in cmi_hold()
175 cmi_rele(cmi_t *cmi) in cmi_rele() argument
180 cmi->cmi_modp->mod_ref--; in cmi_rele()
183 if (--cmi->cmi_refcnt == 0) { in cmi_rele()
184 cmi_unlink(cmi); in cmi_rele()
185 kmem_free(cmi, sizeof (cmi_t)); in cmi_rele()
215 cmi_t *cmi; in cmi_load_modctl() local
220 for (cmi = cmi_list; cmi != NULL; cmi = cmi->cmi_next) { in cmi_load_modctl()
221 if (cmi->cmi_modp == modp) in cmi_load_modctl()
222 return (cmi); in cmi_load_modctl()
252 cmi = kmem_zalloc(sizeof (*cmi), KM_SLEEP); in cmi_load_modctl()
253 cmi->cmi_ops = ops; in cmi_load_modctl()
254 cmi->cmi_modp = modp; in cmi_load_modctl()
256 cmi_link(cmi); in cmi_load_modctl()
258 return (cmi); in cmi_load_modctl()
303 cmi_t *cmi = NULL; in cmi_search_list() local
309 cmi = HDL2CMI(dhdl); in cmi_search_list()
313 return (cmi); in cmi_search_list()
320 cmi_t *cmi; in cmi_load_module() local
332 if ((cmi = cmi_search_list(hdl, match)) != NULL) { in cmi_load_module()
333 cmi_hold(cmi); in cmi_load_module()
334 return (cmi); in cmi_load_module()
347 cmi = cmi_load_modctl(modp); in cmi_load_module()
348 if (cmi) in cmi_load_module()
349 cmi_hold(cmi); in cmi_load_module()
352 return (cmi); in cmi_load_module()
361 cmi_t *cmi; in cmi_load_specific() local
370 if ((cmi = cmi_load_module(hdl, i, &suffixlevel)) == NULL) in cmi_load_specific()
378 if ((err = cmi->cmi_ops->cmi_init(hdl, datap)) == 0) { in cmi_load_specific()
382 cmi->cmi_modp->mod_modname, in cmi_load_specific()
386 return (cmi); in cmi_load_specific()
390 cmi->cmi_modp->mod_modname, in cmi_load_specific()
400 cmi_rele(cmi); in cmi_load_specific()
415 cmi_t *cmi; in cmi_load_generic() local
425 cmi = cmi_load_modctl(modp); in cmi_load_generic()
426 if (cmi) in cmi_load_generic()
427 cmi_hold(cmi); in cmi_load_generic()
430 if (cmi == NULL) in cmi_load_generic()
433 if ((err = cmi->cmi_ops->cmi_init(hdl, datap)) != 0) { in cmi_load_generic()
437 cmi_rele(cmi); in cmi_load_generic()
441 return (cmi); in cmi_load_generic()
448 cmi_t *cmi = NULL; in cmi_init() local
468 cmi = cmi_load_specific(hdl, &data); in cmi_init()
470 if (cmi == NULL && (cmi = cmi_load_generic(hdl, &data)) == NULL) { in cmi_init()
478 cmi_hdl_setcmi(hdl, cmi, data); in cmi_init()
496 cmi_t *cmi = HDL2CMI(hdl); in cmi_fini() local
501 if (CMI_OP_PRESENT(cmi, cmi_fini)) in cmi_fini()
502 CMI_OPS(cmi)->cmi_fini(hdl); in cmi_fini()
515 cmi_t *cmi; in cmi_post_startup() local
521 cmi = HDL2CMI(hdl); in cmi_post_startup()
523 if (CMI_OP_PRESENT(cmi, cmi_post_startup)) in cmi_post_startup()
524 CMI_OPS(cmi)->cmi_post_startup(hdl); in cmi_post_startup()
539 cmi_t *cmi; in cmi_post_mpstartup() local
545 cmi = HDL2CMI(hdl); in cmi_post_mpstartup()
547 if (CMI_OP_PRESENT(cmi, cmi_post_mpstartup)) in cmi_post_mpstartup()
548 CMI_OPS(cmi)->cmi_post_mpstartup(hdl); in cmi_post_mpstartup()
556 cmi_t *cmi = HDL2CMI(hdl); in cmi_faulted_enter() local
561 if (CMI_OP_PRESENT(cmi, cmi_faulted_enter)) in cmi_faulted_enter()
562 CMI_OPS(cmi)->cmi_faulted_enter(hdl); in cmi_faulted_enter()
568 cmi_t *cmi = HDL2CMI(hdl); in cmi_faulted_exit() local
573 if (CMI_OP_PRESENT(cmi, cmi_faulted_exit)) in cmi_faulted_exit()
574 CMI_OPS(cmi)->cmi_faulted_exit(hdl); in cmi_faulted_exit()
580 cmi_t *cmi; in cmi_mca_init() local
585 cmi = HDL2CMI(hdl); in cmi_mca_init()
587 if (CMI_OP_PRESENT(cmi, cmi_mca_init)) in cmi_mca_init()
588 CMI_OPS(cmi)->cmi_mca_init(hdl); in cmi_mca_init()
690 cmi_t *cmi; in cmi_mca_trap() local
706 (cmi = HDL2CMI(hdl)) == NULL || in cmi_mca_trap()
707 !CMI_OP_PRESENT(cmi, cmi_mca_trap)) { in cmi_mca_trap()
721 disp = CMI_OPS(cmi)->cmi_mca_trap(hdl, rp); in cmi_mca_trap()
764 cmi_t *cmi = HDL2CMI(hdl); in cmi_hdl_poke() local
766 if (!CMI_OP_PRESENT(cmi, cmi_hdl_poke)) in cmi_hdl_poke()
769 CMI_OPS(cmi)->cmi_hdl_poke(hdl); in cmi_hdl_poke()
777 cmi_t *cmi; in cmi_cmci_trap() local
784 (cmi = HDL2CMI(hdl)) == NULL || in cmi_cmci_trap()
785 !CMI_OP_PRESENT(cmi, cmi_cmci_trap)) { in cmi_cmci_trap()
798 CMI_OPS(cmi)->cmi_cmci_trap(hdl); in cmi_cmci_trap()
936 cmi_t *cmi = cmi_hdl_getcmi(hdl); in cmi_hdl_msrinject() local
939 if (!CMI_OP_PRESENT(cmi, cmi_msrinject)) in cmi_hdl_msrinject()
943 rc = CMI_OPS(cmi)->cmi_msrinject(hdl, regs, nregs, force); in cmi_hdl_msrinject()
959 cmi_t *cmi; in cmi_panic_callback() local
964 cmi = cmi_hdl_getcmi(hdl); in cmi_panic_callback()
965 if (CMI_OP_PRESENT(cmi, cmi_panic_callback)) in cmi_panic_callback()
966 CMI_OPS(cmi)->cmi_panic_callback(); in cmi_panic_callback()