Lines Matching refs:msix

133 	} msix;  member
974 if (ppt->msix.inth != NULL && ppt->msix.inth[idx] != NULL) { in ppt_teardown_msix_intr()
977 (void) ddi_intr_get_cap(ppt->msix.inth[idx], &intr_cap); in ppt_teardown_msix_intr()
979 ddi_intr_block_disable(&ppt->msix.inth[idx], 1); in ppt_teardown_msix_intr()
981 ddi_intr_disable(ppt->msix.inth[idx]); in ppt_teardown_msix_intr()
983 ddi_intr_remove_handler(ppt->msix.inth[idx]); in ppt_teardown_msix_intr()
992 if (ppt->msix.num_msgs == 0) in ppt_teardown_msix()
995 for (i = 0; i < ppt->msix.num_msgs; i++) in ppt_teardown_msix()
998 if (ppt->msix.inth) { in ppt_teardown_msix()
999 for (i = 0; i < ppt->msix.num_msgs; i++) in ppt_teardown_msix()
1000 ddi_intr_free(ppt->msix.inth[i]); in ppt_teardown_msix()
1001 kmem_free(ppt->msix.inth, ppt->msix.inth_sz); in ppt_teardown_msix()
1002 ppt->msix.inth = NULL; in ppt_teardown_msix()
1003 ppt->msix.inth_sz = 0; in ppt_teardown_msix()
1004 kmem_free(ppt->msix.arg, ppt->msix.arg_sz); in ppt_teardown_msix()
1005 ppt->msix.arg = NULL; in ppt_teardown_msix()
1006 ppt->msix.arg_sz = 0; in ppt_teardown_msix()
1009 ppt->msix.num_msgs = 0; in ppt_teardown_msix()
1310 if (ppt->msix.num_msgs != 0 && numvec != 0) { in ppt_setup_msi()
1422 if (ppt->msix.num_msgs == 0) { in ppt_setup_msix()
1431 ppt->msix.num_msgs = numvec; in ppt_setup_msix()
1433 ppt->msix.arg_sz = numvec * sizeof (ppt->msix.arg[0]); in ppt_setup_msix()
1434 ppt->msix.arg = kmem_zalloc(ppt->msix.arg_sz, KM_SLEEP); in ppt_setup_msix()
1435 ppt->msix.inth_sz = numvec * sizeof (ddi_intr_handle_t); in ppt_setup_msix()
1436 ppt->msix.inth = kmem_zalloc(ppt->msix.inth_sz, KM_SLEEP); in ppt_setup_msix()
1438 if (ddi_intr_alloc(dip, ppt->msix.inth, DDI_INTR_TYPE_MSIX, 0, in ppt_setup_msix()
1440 kmem_free(ppt->msix.arg, ppt->msix.arg_sz); in ppt_setup_msix()
1441 kmem_free(ppt->msix.inth, ppt->msix.inth_sz); in ppt_setup_msix()
1442 ppt->msix.arg = NULL; in ppt_setup_msix()
1443 ppt->msix.inth = NULL; in ppt_setup_msix()
1444 ppt->msix.arg_sz = ppt->msix.inth_sz = 0; in ppt_setup_msix()
1456 if (idx >= ppt->msix.num_msgs) { in ppt_setup_msix()
1467 ppt->msix.arg[idx].pptdev = ppt; in ppt_setup_msix()
1468 ppt->msix.arg[idx].addr = addr; in ppt_setup_msix()
1469 ppt->msix.arg[idx].msg_data = msg; in ppt_setup_msix()
1472 if (ddi_intr_add_handler(ppt->msix.inth[idx], pptintr, in ppt_setup_msix()
1473 &ppt->msix.arg[idx], NULL) != DDI_SUCCESS) { in ppt_setup_msix()
1478 (void) ddi_intr_get_cap(ppt->msix.inth[idx], &intr_cap); in ppt_setup_msix()
1480 res = ddi_intr_block_enable(&ppt->msix.inth[idx], 1); in ppt_setup_msix()
1482 res = ddi_intr_enable(ppt->msix.inth[idx]); in ppt_setup_msix()
1485 ddi_intr_remove_handler(ppt->msix.inth[idx]); in ppt_setup_msix()