Lines Matching refs:dca

65 static void		dca_free_context_list(dca_t *dca);
432 static int dca_check_acc_handle(dca_t *dca, ddi_acc_handle_t handle,
435 static void dca_fma_init(dca_t *dca);
436 static void dca_fma_fini(dca_t *dca);
570 dca_t *dca; in dca_attach() local
597 if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) { in dca_attach()
602 return (dca_resume(dca)); in dca_attach()
669 dca = ddi_get_soft_state(dca_state, instance); in dca_attach()
670 ASSERT(dca != NULL); in dca_attach()
671 dca->dca_dip = dip; in dca_attach()
672 WORKLIST(dca, MCR1)->dwl_prov = NULL; in dca_attach()
673 WORKLIST(dca, MCR2)->dwl_prov = NULL; in dca_attach()
675 dca->dca_pagesize = ddi_ptob(dip, 1); in dca_attach()
698 dca->dca_model = dca_devices[i].dd_model; in dca_attach()
699 dca->dca_devid = dca_devices[i].dd_device_id; in dca_attach()
710 dca->dca_model = dca_devices[i].dd_model; in dca_attach()
711 dca->dca_devid = dca_devices[i].dd_device_id; in dca_attach()
715 if (dca->dca_model == NULL) { in dca_attach()
716 dca->dca_model = unknowndev; in dca_attach()
717 dca_error(dca, "device not recognized, not supported"); in dca_attach()
718 DBG(dca, DPCI, "i=%d venid=%x devid=%x rev=%d", in dca_attach()
723 dca->dca_model) != DDI_SUCCESS) { in dca_attach()
724 dca_error(dca, "unable to create description property"); in dca_attach()
728 DBG(dca, DPCI, "PCI command=0x%x status=%x cachelinesz=%x", in dca_attach()
730 DBG(dca, DPCI, "mingnt=0x%x maxlat=0x%x lattmr=0x%x", in dca_attach()
736 (void) mutex_init(&dca->dca_intrlock, NULL, MUTEX_DRIVER, ibc); in dca_attach()
741 dca->dca_flags |= DCA_RNGSHA1; in dca_attach()
745 dca_fma_init(dca); in dca_attach()
748 if (dca_init(dca) != DDI_SUCCESS) { in dca_attach()
753 dca_ksinit(dca); in dca_attach()
756 if (ddi_regs_map_setup(dip, 1, (caddr_t *)&dca->dca_regs, in dca_attach()
757 0, 0, &dca_regsattr, &dca->dca_regs_handle) != DDI_SUCCESS) { in dca_attach()
758 dca_error(dca, "unable to map registers"); in dca_attach()
762 DBG(dca, DCHATTY, "MCR1 = %x", GETCSR(dca, CSR_MCR1)); in dca_attach()
763 DBG(dca, DCHATTY, "CONTROL = %x", GETCSR(dca, CSR_DMACTL)); in dca_attach()
764 DBG(dca, DCHATTY, "STATUS = %x", GETCSR(dca, CSR_DMASTAT)); in dca_attach()
765 DBG(dca, DCHATTY, "DMAEA = %x", GETCSR(dca, CSR_DMAEA)); in dca_attach()
766 DBG(dca, DCHATTY, "MCR2 = %x", GETCSR(dca, CSR_MCR2)); in dca_attach()
769 if (dca_reset(dca, 0) < 0) { in dca_attach()
774 PUTCSR(dca, CSR_DMACTL, DMACTL_BE32 | DMACTL_BE64); in dca_attach()
775 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_attach()
781 if (ddi_add_intr(dip, 0, &dca->dca_icookie, NULL, dca_intr, in dca_attach()
782 (void *)dca) != DDI_SUCCESS) { in dca_attach()
783 DBG(dca, DWARN, "ddi_add_intr failed"); in dca_attach()
796 if (dca->dca_devid == 0x5825) { in dca_attach()
798 SETBIT(dca, CSR_DMACTL, in dca_attach()
801 SETBIT(dca, CSR_DMACTL, in dca_attach()
804 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_attach()
815 dca_prov_info1.pi_provider_handle = dca; in dca_attach()
817 &WORKLIST(dca, MCR1)->dwl_prov)) != CRYPTO_SUCCESS) { in dca_attach()
829 dca_prov_info2.pi_provider_handle = dca; in dca_attach()
831 &WORKLIST(dca, MCR2)->dwl_prov)) != CRYPTO_SUCCESS) { in dca_attach()
837 crypto_prov_notify(WORKLIST(dca, MCR1)->dwl_prov, in dca_attach()
839 crypto_prov_notify(WORKLIST(dca, MCR2)->dwl_prov, in dca_attach()
843 if ((ret = dca_random_init(dca)) != CRYPTO_SUCCESS) { in dca_attach()
847 mutex_enter(&dca->dca_intrlock); in dca_attach()
848 dca->dca_jobtid = timeout(dca_jobtimeout, (void *)dca, in dca_attach()
850 mutex_exit(&dca->dca_intrlock); in dca_attach()
852 ddi_set_driver_private(dip, (caddr_t)dca); in dca_attach()
856 if (ddi_get_devstate(dca->dca_dip) != DDI_DEVSTATE_UP) { in dca_attach()
857 ddi_fm_service_impact(dca->dca_dip, DDI_SERVICE_RESTORED); in dca_attach()
864 if (WORKLIST(dca, MCR1)->dwl_prov != NULL) { in dca_attach()
866 WORKLIST(dca, MCR1)->dwl_prov); in dca_attach()
868 if (WORKLIST(dca, MCR2)->dwl_prov != NULL) { in dca_attach()
870 WORKLIST(dca, MCR2)->dwl_prov); in dca_attach()
873 CLRBIT(dca, CSR_DMACTL, in dca_attach()
876 ddi_remove_intr(dip, 0, dca->dca_icookie); in dca_attach()
878 if (dca->dca_regs_handle) { in dca_attach()
879 ddi_regs_map_free(&dca->dca_regs_handle); in dca_attach()
881 if (dca->dca_intrstats) { in dca_attach()
882 kstat_delete(dca->dca_intrstats); in dca_attach()
884 if (dca->dca_ksp) { in dca_attach()
885 kstat_delete(dca->dca_ksp); in dca_attach()
887 dca_uninit(dca); in dca_attach()
890 dca_fma_fini(dca); in dca_attach()
892 mutex_destroy(&dca->dca_intrlock); in dca_attach()
902 dca_t *dca; in dca_detach() local
911 if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) { in dca_detach()
916 return (dca_suspend(dca)); in dca_detach()
924 if ((dca = (dca_t *)ddi_get_driver_private(dip)) == NULL) { in dca_detach()
933 if (WORKLIST(dca, MCR1)->dwl_prov != NULL) { in dca_detach()
935 WORKLIST(dca, MCR1)->dwl_prov) != CRYPTO_SUCCESS) { in dca_detach()
936 dca_error(dca, "unable to unregister MCR1 from kcf"); in dca_detach()
941 if (WORKLIST(dca, MCR2)->dwl_prov != NULL) { in dca_detach()
943 WORKLIST(dca, MCR2)->dwl_prov) != CRYPTO_SUCCESS) { in dca_detach()
944 dca_error(dca, "unable to unregister MCR2 from kcf"); in dca_detach()
953 dca_free_context_list(dca); in dca_detach()
956 dca_random_fini(dca); in dca_detach()
959 dca_rejectjobs(dca); in dca_detach()
962 mutex_enter(&dca->dca_intrlock); in dca_detach()
963 tid = dca->dca_jobtid; in dca_detach()
964 dca->dca_jobtid = 0; in dca_detach()
965 mutex_exit(&dca->dca_intrlock); in dca_detach()
971 CLRBIT(dca, CSR_DMACTL, DMACTL_MCR1IE | DMACTL_MCR2IE | DMACTL_EIE); in dca_detach()
974 ddi_remove_intr(dip, 0, dca->dca_icookie); in dca_detach()
977 ddi_regs_map_free(&dca->dca_regs_handle); in dca_detach()
980 if (dca->dca_intrstats) { in dca_detach()
981 kstat_delete(dca->dca_intrstats); in dca_detach()
983 if (dca->dca_ksp) { in dca_detach()
984 kstat_delete(dca->dca_ksp); in dca_detach()
987 mutex_destroy(&dca->dca_intrlock); in dca_detach()
988 dca_uninit(dca); in dca_detach()
991 dca_fma_fini(dca); in dca_detach()
999 dca_resume(dca_t *dca) in dca_resume() argument
1003 if (pci_config_setup(dca->dca_dip, &pci) != DDI_SUCCESS) { in dca_resume()
1004 dca_error(dca, "unable to setup PCI config handle"); in dca_resume()
1025 if (dca_reset(dca, 0) < 0) { in dca_resume()
1026 dca_error(dca, "unable to reset device during resume"); in dca_resume()
1035 PUTCSR(dca, CSR_DMACTL, DMACTL_BE32 | DMACTL_BE64); in dca_resume()
1036 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_resume()
1041 if (dca->dca_devid == 0x5825) { in dca_resume()
1043 SETBIT(dca, CSR_DMACTL, in dca_resume()
1046 SETBIT(dca, CSR_DMACTL, in dca_resume()
1049 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_resume()
1054 dca_undrain(dca); in dca_resume()
1060 dca_suspend(dca_t *dca) in dca_suspend() argument
1062 if ((dca_drain(dca)) != 0) { in dca_suspend()
1065 if (dca_reset(dca, 0) < 0) { in dca_suspend()
1066 dca_error(dca, "unable to reset device during suspend"); in dca_suspend()
1076 dca_reset(dca_t *dca, int failreset) in dca_reset() argument
1080 if (dca->dca_regs_handle == NULL) { in dca_reset()
1084 PUTCSR(dca, CSR_DMACTL, DMACTL_RESET); in dca_reset()
1086 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_reset()
1095 dmactl = GETCSR(dca, CSR_DMACTL); in dca_reset()
1097 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_reset()
1102 DBG(dca, DCHATTY, "reset in %d usec", i * 100); in dca_reset()
1107 dca_failure(dca, DDI_DEVICE_FAULT, in dca_reset()
1115 dca_initworklist(dca_t *dca, dca_worklist_t *wlp) in dca_initworklist() argument
1123 mutex_init(&wlp->dwl_lock, NULL, MUTEX_DRIVER, dca->dca_icookie); in dca_initworklist()
1125 dca->dca_icookie); in dca_initworklist()
1126 mutex_init(&wlp->dwl_freelock, NULL, MUTEX_DRIVER, dca->dca_icookie); in dca_initworklist()
1139 if ((workp = dca_newwork(dca)) == NULL) { in dca_initworklist()
1140 dca_error(dca, "unable to allocate work"); in dca_initworklist()
1152 if ((reqp = dca_newreq(dca)) == NULL) { in dca_initworklist()
1153 dca_error(dca, "unable to allocate request"); in dca_initworklist()
1156 reqp->dr_dca = dca; in dca_initworklist()
1164 dca_init(dca_t *dca) in dca_init() argument
1169 mutex_init(&dca->dca_ctx_list_lock, NULL, MUTEX_DRIVER, NULL); in dca_init()
1170 dca_initq(&dca->dca_ctx_list); in dca_init()
1175 wlp = WORKLIST(dca, MCR1); in dca_init()
1177 ddi_get_instance(dca->dca_dip)); in dca_init()
1179 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1182 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1185 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1187 wlp->dwl_dca = dca; in dca_init()
1189 if (dca_initworklist(dca, wlp) != DDI_SUCCESS) { in dca_init()
1196 wlp = WORKLIST(dca, MCR2); in dca_init()
1198 ddi_get_instance(dca->dca_dip)); in dca_init()
1200 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1203 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1206 dca->dca_dip, DDI_PROP_CANSLEEP | DDI_PROP_DONTPASS, in dca_init()
1208 wlp->dwl_dca = dca; in dca_init()
1210 if (dca_initworklist(dca, wlp) != DDI_SUCCESS) { in dca_init()
1223 dca_uninit(dca_t *dca) in dca_uninit() argument
1227 mutex_destroy(&dca->dca_ctx_list_lock); in dca_uninit()
1230 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_uninit()
1234 if (dca->dca_regs_handle == NULL) { in dca_uninit()
1239 while ((workp = dca_getwork(dca, mcr)) != NULL) { in dca_uninit()
1243 while ((reqp = dca_getreq(dca, mcr, 0)) != NULL) { in dca_uninit()
1385 dca_t *dca = (dca_t *)arg; in dca_intr() local
1388 mutex_enter(&dca->dca_intrlock); in dca_intr()
1389 status = GETCSR(dca, CSR_DMASTAT); in dca_intr()
1390 PUTCSR(dca, CSR_DMASTAT, status & DMASTAT_INTERRUPTS); in dca_intr()
1391 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_intr()
1393 mutex_exit(&dca->dca_intrlock); in dca_intr()
1397 DBG(dca, DINTR, "interrupted, status = 0x%x!", status); in dca_intr()
1401 if (dca->dca_intrstats) { in dca_intr()
1402 KIOIP(dca)->intrs[KSTAT_INTR_SPURIOUS]++; in dca_intr()
1404 mutex_exit(&dca->dca_intrlock); in dca_intr()
1408 if (dca->dca_intrstats) { in dca_intr()
1409 KIOIP(dca)->intrs[KSTAT_INTR_HARD]++; in dca_intr()
1412 DBG(dca, DINTR, "MCR1 interrupted"); in dca_intr()
1413 mutex_enter(&(WORKLIST(dca, MCR1)->dwl_lock)); in dca_intr()
1414 dca_schedule(dca, MCR1); in dca_intr()
1415 dca_reclaim(dca, MCR1); in dca_intr()
1416 mutex_exit(&(WORKLIST(dca, MCR1)->dwl_lock)); in dca_intr()
1420 DBG(dca, DINTR, "MCR2 interrupted"); in dca_intr()
1421 mutex_enter(&(WORKLIST(dca, MCR2)->dwl_lock)); in dca_intr()
1422 dca_schedule(dca, MCR2); in dca_intr()
1423 dca_reclaim(dca, MCR2); in dca_intr()
1424 mutex_exit(&(WORKLIST(dca, MCR2)->dwl_lock)); in dca_intr()
1429 erraddr = GETCSR(dca, CSR_DMAEA); in dca_intr()
1430 mutex_exit(&dca->dca_intrlock); in dca_intr()
1436 dca_failure(dca, DDI_DEVICE_FAULT, in dca_intr()
1443 mutex_exit(&dca->dca_intrlock); in dca_intr()
1531 dca_newwork(dca_t *dca) in dca_newwork() argument
1541 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newwork()
1544 dca_error(dca, "unable to alloc MCR DMA handle"); in dca_newwork()
1550 ROUNDUP(MCR_SIZE, dca->dca_pagesize), in dca_newwork()
1554 dca_error(dca, "unable to alloc MCR DMA memory"); in dca_newwork()
1563 dca_error(dca, "unable to map MCR DMA memory"); in dca_newwork()
1588 dca_newreq(dca_t *dca) in dca_newreq() argument
1601 reqp->dr_dca = dca; in dca_newreq()
1606 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, DDI_DMA_SLEEP, in dca_newreq()
1609 dca_error(dca, "failure allocating request DMA handle"); in dca_newreq()
1616 ROUNDUP(size, dca->dca_pagesize), &dca_devattr, DDI_DMA_CONSISTENT, in dca_newreq()
1620 dca_error(dca, "unable to alloc request DMA memory"); in dca_newreq()
1629 dca_error(dca, "failed binding request DMA handle"); in dca_newreq()
1640 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newreq()
1643 dca_error(dca, "failure allocating ibuf DMA handle"); in dca_newreq()
1647 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newreq()
1650 dca_error(dca, "failure allocating obuf DMA handle"); in dca_newreq()
1655 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newreq()
1658 dca_error(dca, "failure allocating chain_in DMA handle"); in dca_newreq()
1663 rv = ddi_dma_alloc_handle(dca->dca_dip, &dca_dmaattr, in dca_newreq()
1666 dca_error(dca, "failure allocating chain_out DMA handle"); in dca_newreq()
1674 size = ROUNDUP(MAXPACKET, dca->dca_pagesize); in dca_newreq()
1683 dca_error(dca, "unable to alloc request ibuf memory"); in dca_newreq()
1688 dca_error(dca, "unable to alloc request obuf memory"); in dca_newreq()
1705 dca_error(dca, "unable to alloc request DMA memory"); in dca_newreq()
1715 dca_error(dca, "unable to alloc request DMA memory"); in dca_newreq()
1745 DBG(dca, DCHATTY, "CTX is 0x%p, phys 0x%x, len %d", in dca_newreq()
1754 dca_t *dca = reqp->dr_dca; in dca_destroyreq() local
1755 size_t size = ROUNDUP(MAXPACKET, dca->dca_pagesize); in dca_destroyreq()
1825 dca_getwork(dca_t *dca, int mcr) in dca_getwork() argument
1827 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_getwork()
1854 dca_getreq(dca_t *dca, int mcr, int tryhard) in dca_getreq() argument
1856 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_getreq()
1870 if ((reqp = dca_newreq(dca)) != NULL) { in dca_getreq()
1872 reqp->dr_dca = dca; in dca_getreq()
2090 dca_start(dca_t *dca, dca_request_t *reqp, int mcr, int dosched) in dca_start() argument
2092 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_start()
2096 DBG(dca, DCHATTY, "req=%p, in=%p, out=%p, ctx=%p, ibuf=%p, obuf=%p", in dca_start()
2099 DBG(dca, DCHATTY, "ctx paddr = %x, ibuf paddr = %x, obuf paddr = %x", in dca_start()
2103 if (dca_check_dma_handle(dca, reqp->dr_ctx_dmah, in dca_start()
2128 dca_schedule(dca, mcr); in dca_start()
2135 dca_schedule(dca, mcr); in dca_start()
2144 dca_schedule(dca_t *dca, int mcr) in dca_schedule() argument
2146 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_schedule()
2156 if (wlp->dwl_drain || (dca->dca_flags & DCA_FAILED)) { in dca_schedule()
2173 status = GETCSR(dca, CSR_DMASTAT); in dca_schedule()
2174 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_schedule()
2196 workp = dca_getwork(dca, mcr); in dca_schedule()
2204 dca_reclaim(dca, mcr); in dca_schedule()
2296 DBG(dca, DCHATTY, in dca_schedule()
2305 if (dca_check_dma_handle(dca, workp->dw_mcr_dmah, in dca_schedule()
2311 PUTCSR(dca, csr, workp->dw_mcr_paddr); in dca_schedule()
2312 if (dca_check_acc_handle(dca, dca->dca_regs_handle, in dca_schedule()
2320 DBG(dca, DCHATTY, "posted"); in dca_schedule()
2328 dca_reclaim(dca_t *dca, int mcr) in dca_reclaim() argument
2330 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_reclaim()
2336 DBG(dca, DRECLAIM, "worklist = 0x%p (MCR%d)", wlp, mcr); in dca_reclaim()
2354 if (dca_check_dma_handle(dca, workp->dw_mcr_dmah, in dca_reclaim()
2364 DBG(dca, DRECLAIM, in dca_reclaim()
2384 dca->dca_stats[reqp->dr_byte_stat] += in dca_reclaim()
2388 dca->dca_stats[reqp->dr_job_stat]++; in dca_reclaim()
2412 DBG(dca, DRECLAIM, "reclaimed %d cmds", nreclaimed); in dca_reclaim()
2457 dca_failure(dca_t *dca, ddi_fault_location_t loc, dca_fma_eclass_t index, in dca_failure() argument
2470 eclass = dca_fma_eclass_string(dca->dca_model, index); in dca_failure()
2472 if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) && in dca_failure()
2474 ddi_fm_ereport_post(dca->dca_dip, eclass, ena, in dca_failure()
2479 ddi_fm_service_impact(dca->dca_dip, DDI_SERVICE_LOST); in dca_failure()
2482 dca_error(dca, buf); in dca_failure()
2488 dca->dca_flags |= DCA_FAILED; in dca_failure()
2494 (void) dca_reset(dca, 1); in dca_failure()
2500 if (WORKLIST(dca, mcr)->dwl_prov) { in dca_failure()
2501 crypto_prov_notify(WORKLIST(dca, mcr)->dwl_prov, in dca_failure()
2509 dca_rejectjobs(dca); in dca_failure()
2524 wlp = WORKLIST(dca, mcr); in dca_failure()
2594 dca_t *dca = (dca_t *)arg; in dca_jobtimeout() local
2598 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_jobtimeout()
2619 DBG(dca, DWARN, "stale job (0x%p) found in MCR%d!", workp, in dca_jobtimeout()
2628 dca_failure(dca, DDI_DEVICE_FAULT, in dca_jobtimeout()
2634 mutex_enter(&dca->dca_intrlock); in dca_jobtimeout()
2635 if (dca->dca_jobtid == 0) { in dca_jobtimeout()
2637 mutex_exit(&dca->dca_intrlock); in dca_jobtimeout()
2642 dca->dca_jobtid = timeout(dca_jobtimeout, arg, in dca_jobtimeout()
2644 mutex_exit(&dca->dca_intrlock); in dca_jobtimeout()
2652 dca_rejectjobs(dca_t *dca) in dca_rejectjobs() argument
2657 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_rejectjobs()
2689 dca_drain(dca_t *dca) in dca_drain() argument
2696 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_drain()
2707 dca_error(dca, "unable to drain device"); in dca_drain()
2709 dca_undrain(dca); in dca_drain()
2734 dca_undrain(dca_t *dca) in dca_undrain() argument
2739 dca_worklist_t *wlp = WORKLIST(dca, mcr); in dca_undrain()
2742 dca_schedule(dca, mcr); in dca_undrain()
2962 dca_sgcheck(dca_t *dca, crypto_data_t *data, dca_sg_param_t val) in dca_sgcheck() argument
3045 if ((data->cd_length % dca->dca_pagesize) || in dca_sgcheck()
3047 dca->dca_pagesize)) { in dca_sgcheck()
3054 if ((uiop->uio_iov[0].iov_len % dca->dca_pagesize) || in dca_sgcheck()
3056 dca->dca_pagesize)) { in dca_sgcheck()
3063 if ((MBLKL(mp) % dca->dca_pagesize) || in dca_sgcheck()
3064 ((uintptr_t)mp->b_rptr % dca->dca_pagesize)) { in dca_sgcheck()
4790 dca_free_context_list(dca_t *dca) in dca_free_context_list() argument
4796 ctx.cc_provider = dca; in dca_free_context_list()
4798 while ((node = dca_delist2(&dca->dca_ctx_list, in dca_free_context_list()
4799 &dca->dca_ctx_list_lock)) != NULL) { in dca_free_context_list()
4830 dca_t *dca = (dca_t *)prov; in ext_info_base() local
4835 ddi_driver_name(dca->dca_dip), ddi_get_instance(dca->dca_dip), id); in ext_info_base()
4848 (void) sprintf((char *)ext_info->ei_model, dca->dca_model); in ext_info_base()
4850 DBG(dca, DWARN, "kCF MODEL: %s", (char *)ext_info->ei_model); in ext_info_base()
4880 dca_fma_init(dca_t *dca) in dca_fma_init() argument
4888 dca->fm_capabilities = ddi_getprop(DDI_DEV_T_ANY, dca->dca_dip, in dca_fma_init()
4892 DBG(dca, DWARN, "dca->fm_capabilities = 0x%x", dca->fm_capabilities); in dca_fma_init()
4895 if (dca->fm_capabilities) { in dca_fma_init()
4900 ddi_fm_init(dca->dca_dip, &dca->fm_capabilities, &fm_ibc); in dca_fma_init()
4901 DBG(dca, DWARN, "fm_capable() = 0x%x", in dca_fma_init()
4902 ddi_fm_capable(dca->dca_dip)); in dca_fma_init()
4907 if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) || in dca_fma_init()
4908 DDI_FM_ERRCB_CAP(dca->fm_capabilities)) in dca_fma_init()
4909 pci_ereport_setup(dca->dca_dip); in dca_fma_init()
4915 if (DDI_FM_ERRCB_CAP(dca->fm_capabilities)) { in dca_fma_init()
4916 ddi_fm_handler_register(dca->dca_dip, dca_fm_error_cb, in dca_fma_init()
4917 (void *)dca); in dca_fma_init()
4931 dca_fma_fini(dca_t *dca) in dca_fma_fini() argument
4934 if (dca->fm_capabilities) { in dca_fma_fini()
4939 if (DDI_FM_EREPORT_CAP(dca->fm_capabilities) || in dca_fma_fini()
4940 DDI_FM_ERRCB_CAP(dca->fm_capabilities)) { in dca_fma_fini()
4941 pci_ereport_teardown(dca->dca_dip); in dca_fma_fini()
4948 if (DDI_FM_ERRCB_CAP(dca->fm_capabilities)) { in dca_fma_fini()
4949 ddi_fm_handler_unregister(dca->dca_dip); in dca_fma_fini()
4953 ddi_fm_fini(dca->dca_dip); in dca_fma_fini()
4954 DBG(dca, DWARN, "fm_capable() = 0x%x", in dca_fma_fini()
4955 ddi_fm_capable(dca->dca_dip)); in dca_fma_fini()
4967 dca_t *dca = (dca_t *)impl_data; in dca_fm_error_cb() local
4971 dca_failure(dca, DDI_DATAPATH_FAULT, in dca_fm_error_cb()
4980 dca_check_acc_handle(dca_t *dca, ddi_acc_handle_t handle, in dca_check_acc_handle() argument
4988 dca_failure(dca, DDI_DATAPATH_FAULT, in dca_check_acc_handle()
4998 dca_check_dma_handle(dca_t *dca, ddi_dma_handle_t handle, in dca_check_dma_handle() argument
5006 dca_failure(dca, DDI_DATAPATH_FAULT, in dca_check_dma_handle()