Lines Matching refs:immu

302 init_unit(immu_t *immu)  in init_unit()  argument
334 ASSERT(IMMU_ECAP_GET_QI(immu->immu_regs_excap)); in init_unit()
337 if (!IMMU_ECAP_GET_EIM(immu->immu_regs_excap)) { in init_unit()
348 if (ddi_dma_alloc_handle(immu->immu_dip, in init_unit()
383 immu->immu_intrmap = intrmap; in init_unit()
391 immu_t *immu = NULL; in get_immu() local
394 immu = immu_dmar_ioapic_immu(ioapic_index); in get_immu()
397 immu = immu_dmar_get_immu(dip); in get_immu()
400 return (immu); in get_immu()
479 intrmap_enable(immu_t *immu) in intrmap_enable() argument
484 intrmap = immu->immu_intrmap; in intrmap_enable()
491 immu_regs_intrmap_enable(immu, irta_reg); in intrmap_enable()
503 immu_t *immu = (immu_t *)arg; in immu_intr_handler() local
510 mutex_enter(&(immu->immu_intr_lock)); in immu_intr_handler()
511 mutex_enter(&(immu->immu_regs_lock)); in immu_intr_handler()
514 status = immu_regs_get32(immu, IMMU_REG_FAULT_STS); in immu_intr_handler()
516 idip = immu->immu_dip; in immu_intr_handler()
521 mutex_exit(&(immu->immu_regs_lock)); in immu_intr_handler()
522 mutex_exit(&(immu->immu_intr_lock)); in immu_intr_handler()
530 max_fault_index = IMMU_CAP_GET_NFR(immu->immu_regs_cap) - 1; in immu_intr_handler()
531 fault_reg_offset = IMMU_CAP_GET_FRO(immu->immu_regs_cap); in immu_intr_handler()
544 val = immu_regs_get64(immu, fault_reg_offset + index * 16 + 8); in immu_intr_handler()
559 val = immu_regs_get64(immu, fault_reg_offset + index * 16); in immu_intr_handler()
564 immu_regs_put32(immu, fault_reg_offset + index * 16 + 12, in immu_intr_handler()
605 immu_regs_put32(immu, IMMU_REG_FAULT_STS, 1); in immu_intr_handler()
606 mutex_exit(&(immu->immu_regs_lock)); in immu_intr_handler()
607 mutex_exit(&(immu->immu_intr_lock)); in immu_intr_handler()
620 immu_t *immu; in immu_intrmap_init() local
629 immu = list_head(&immu_list); in immu_intrmap_init()
630 for (; immu; immu = list_next(&immu_list, immu)) { in immu_intrmap_init()
631 if ((immu->immu_intrmap_running == B_TRUE) && in immu_intrmap_init()
632 IMMU_ECAP_GET_IR(immu->immu_regs_excap)) { in immu_intrmap_init()
633 if (init_unit(immu) == DDI_SUCCESS) { in immu_intrmap_init()
652 immu_t *immu; in immu_intrmap_switchon() local
657 immu = list_head(&immu_list); in immu_intrmap_switchon()
658 for (; immu; immu = list_next(&immu_list, immu)) { in immu_intrmap_switchon()
659 if (immu->immu_intrmap_setup == B_TRUE) { in immu_intrmap_switchon()
660 intrmap_enable(immu); in immu_intrmap_switchon()
670 immu_t *immu; in immu_intrmap_alloc() local
686 immu = get_immu(dip, type, ioapic_index); in immu_intrmap_alloc()
687 if ((immu != NULL) && (immu->immu_intrmap_running == B_TRUE)) { in immu_intrmap_alloc()
688 intrmap_private->ir_immu = immu; in immu_intrmap_alloc()
693 intrmap = immu->immu_intrmap; in immu_intrmap_alloc()
713 if (IMMU_CAP_GET_CM(immu->immu_regs_cap)) { in immu_intrmap_alloc()
714 immu_qinv_intr_one_cache(immu, idx, iwp); in immu_intrmap_alloc()
716 immu_regs_wbf_flush(immu); in immu_intrmap_alloc()
725 INTRMAP_PRIVATE(intrmap_private_tbl[i])->ir_immu = immu; in immu_intrmap_alloc()
731 if (IMMU_CAP_GET_CM(immu->immu_regs_cap)) { in immu_intrmap_alloc()
732 immu_qinv_intr_caches(immu, idx, count, iwp); in immu_intrmap_alloc()
734 immu_regs_wbf_flush(immu); in immu_intrmap_alloc()
750 immu_t *immu; in immu_intrmap_map() local
764 immu = INTRMAP_PRIVATE(intrmap_private)->ir_immu; in immu_intrmap_map()
766 intrmap = immu->immu_intrmap; in immu_intrmap_map()
806 immu_qinv_intr_one_cache(immu, idx, iwp); in immu_intrmap_map()
821 immu_qinv_intr_caches(immu, idx, count, iwp); in immu_intrmap_map()
829 immu_t *immu; in immu_intrmap_free() local
839 immu = INTRMAP_PRIVATE(*intrmap_privatep)->ir_immu; in immu_intrmap_free()
841 intrmap = immu->immu_intrmap; in immu_intrmap_free()
847 immu_qinv_intr_one_cache(immu, idx, iwp); in immu_intrmap_free()
917 immu_t *immu; in immu_intrmap_setup() local
936 immu = list_head(listp); in immu_intrmap_setup()
937 for (; immu; immu = list_next(listp, immu)) { in immu_intrmap_setup()
938 mutex_init(&(immu->immu_intrmap_lock), NULL, in immu_intrmap_setup()
940 mutex_enter(&(immu->immu_intrmap_lock)); in immu_intrmap_setup()
941 immu_init_inv_wait(&immu->immu_intrmap_inv_wait, in immu_intrmap_setup()
943 immu->immu_intrmap_setup = B_TRUE; in immu_intrmap_setup()
944 mutex_exit(&(immu->immu_intrmap_lock)); in immu_intrmap_setup()
949 immu_intrmap_startup(immu_t *immu) in immu_intrmap_startup() argument
952 mutex_enter(&(immu->immu_intrmap_lock)); in immu_intrmap_startup()
953 if (immu->immu_intrmap_setup == B_TRUE) { in immu_intrmap_startup()
954 immu->immu_intrmap_running = B_TRUE; in immu_intrmap_startup()
956 mutex_exit(&(immu->immu_intrmap_lock)); in immu_intrmap_startup()
964 immu_intr_register(immu_t *immu) in immu_intr_register() argument
996 "%s-intr-handler", immu->immu_name); in immu_intr_register()
1000 (caddr_t)immu, NULL, NULL, NULL); in immu_intr_register()
1002 immu_regs_intr_enable(immu, msi_addr, msi_data, uaddr); in immu_intr_register()
1004 (void) immu_intr_handler((caddr_t)immu, NULL); in immu_intr_register()