Lines Matching refs:sip

74 	sfxge_intr_t *sip = &(sp->s_intr);  in sfxge_intr_line()  local
82 ASSERT3U(sip->si_type, ==, EFX_INTR_LINE); in sfxge_intr_line()
84 if (sip->si_state != SFXGE_INTR_STARTED && in sfxge_intr_line()
85 sip->si_state != SFXGE_INTR_TESTING) { in sfxge_intr_line()
90 if (sip->si_state == SFXGE_INTR_TESTING) { in sfxge_intr_line()
91 sip->si_mask |= 1; /* only one interrupt */ in sfxge_intr_line()
111 sip->si_zero_count = 0; in sfxge_intr_line()
123 if (sip->si_zero_count++ == 0) { in sfxge_intr_line()
148 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_message() local
153 ASSERT3U(sip->si_type, ==, EFX_INTR_MESSAGE); in sfxge_intr_message()
155 if (sip->si_state != SFXGE_INTR_STARTED && in sfxge_intr_message()
156 sip->si_state != SFXGE_INTR_TESTING) { in sfxge_intr_message()
161 if (sip->si_state == SFXGE_INTR_TESTING) { in sfxge_intr_message()
165 mask = sip->si_mask; in sfxge_intr_message()
166 } while (atomic_cas_64(&(sip->si_mask), mask, in sfxge_intr_message()
194 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_bus_enable() local
204 switch (sip->si_type) { in sfxge_intr_bus_enable()
216 sip->si_type, sip->si_nalloc); in sfxge_intr_bus_enable()
223 for (add_index = 0; add_index < sip->si_nalloc; add_index++) { in sfxge_intr_bus_enable()
227 err = ddi_intr_get_pri(sip->si_table[add_index], &pri); in sfxge_intr_bus_enable()
232 err = ddi_intr_add_handler(sip->si_table[add_index], handler, in sfxge_intr_bus_enable()
238 err, (void *)sip->si_table[add_index], add_index, in sfxge_intr_bus_enable()
239 sip->si_nalloc); in sfxge_intr_bus_enable()
247 err = ddi_intr_get_cap(sip->si_table[0], &(sip->si_cap)); in sfxge_intr_bus_enable()
252 err, (void *)sip->si_table[0], 0, sip->si_nalloc); in sfxge_intr_bus_enable()
265 if (sip->si_cap & DDI_INTR_FLAG_BLOCK) { in sfxge_intr_bus_enable()
267 err = ddi_intr_block_enable(sip->si_table, sip->si_nalloc); in sfxge_intr_bus_enable()
272 err, (void *)sip->si_table, sip->si_nalloc); in sfxge_intr_bus_enable()
278 for (en_index = 0; en_index < sip->si_nalloc; en_index++) { in sfxge_intr_bus_enable()
279 err = ddi_intr_enable(sip->si_table[en_index]); in sfxge_intr_bus_enable()
284 err, (void *)sip->si_table[en_index], in sfxge_intr_bus_enable()
285 en_index, sip->si_nalloc); in sfxge_intr_bus_enable()
300 if (!(sip->si_cap & DDI_INTR_FLAG_BLOCK)) { in sfxge_intr_bus_enable()
302 err = ddi_intr_disable(sip->si_table[en_index]); in sfxge_intr_bus_enable()
307 err, (void *)sip->si_table[en_index], in sfxge_intr_bus_enable()
308 en_index, sip->si_nalloc); in sfxge_intr_bus_enable()
317 add_index = sip->si_nalloc; in sfxge_intr_bus_enable()
324 err = ddi_intr_remove_handler(sip->si_table[add_index]); in sfxge_intr_bus_enable()
329 err, (void *)sip->si_table[add_index], add_index, in sfxge_intr_bus_enable()
330 sip->si_nalloc); in sfxge_intr_bus_enable()
344 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_bus_disable() local
352 if (sip->si_cap & DDI_INTR_FLAG_BLOCK) { in sfxge_intr_bus_disable()
353 err = ddi_intr_block_disable(sip->si_table, sip->si_nalloc); in sfxge_intr_bus_disable()
358 err, (void *)sip->si_table, sip->si_nalloc); in sfxge_intr_bus_disable()
361 index = sip->si_nalloc; in sfxge_intr_bus_disable()
363 err = ddi_intr_disable(sip->si_table[index]); in sfxge_intr_bus_disable()
368 err, (void *)sip->si_table[index], index, in sfxge_intr_bus_disable()
369 sip->si_nalloc); in sfxge_intr_bus_disable()
374 sip->si_cap = 0; in sfxge_intr_bus_disable()
377 index = sip->si_nalloc; in sfxge_intr_bus_disable()
379 err = ddi_intr_remove_handler(sip->si_table[index]); in sfxge_intr_bus_disable()
384 err, (void *)sip->si_table[index], index, in sfxge_intr_bus_disable()
385 sip->si_nalloc); in sfxge_intr_bus_disable()
395 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_nic_enable() local
396 efsys_mem_t *esmp = &(sip->si_mem); in sfxge_intr_nic_enable()
407 if ((rc = efx_intr_init(enp, sip->si_type, esmp)) != 0) in sfxge_intr_nic_enable()
421 for (index = 0; index < sip->si_nalloc; index++) { in sfxge_intr_nic_enable()
440 if ((mask & sip->si_mask) == mask) in sfxge_intr_nic_enable()
457 mask, sip->si_mask); in sfxge_intr_nic_enable()
459 DTRACE_PROBE2(int_test_fail, uint64_t, mask, uint64_t, sip->si_mask); in sfxge_intr_nic_enable()
461 sip->si_mask = 0; in sfxge_intr_nic_enable()
476 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_nic_disable() local
479 sip->si_mask = 0; in sfxge_intr_nic_disable()
499 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_init() local
500 efsys_mem_t *esmp = &(sip->si_mem); in sfxge_intr_init()
510 SFXGE_OBJ_CHECK(sip, sfxge_intr_t); in sfxge_intr_init()
512 ASSERT3U(sip->si_state, ==, SFXGE_INTR_UNINITIALIZED); in sfxge_intr_init()
542 sip->si_type = EFX_INTR_MESSAGE; in sfxge_intr_init()
549 sip->si_type = EFX_INTR_LINE; in sfxge_intr_init()
588 sip->si_table_size = navail * sizeof (ddi_intr_handle_t); in sfxge_intr_init()
589 sip->si_table = kmem_zalloc(sip->si_table_size, KM_SLEEP); in sfxge_intr_init()
597 err = ddi_intr_alloc(dip, sip->si_table, type, 0, in sfxge_intr_init()
598 navail, &(sip->si_nalloc), DDI_INTR_ALLOC_NORMAL); in sfxge_intr_init()
606 err, navail, sip->si_nalloc); in sfxge_intr_init()
621 if (sip->si_nalloc == 0) { in sfxge_intr_init()
627 nalloc = pow2_le(sip->si_nalloc); in sfxge_intr_init()
632 index = sip->si_nalloc; in sfxge_intr_init()
634 (void) ddi_intr_free(sip->si_table[index]); in sfxge_intr_init()
635 sip->si_table[index] = NULL; in sfxge_intr_init()
640 sip->si_nalloc = nalloc; in sfxge_intr_init()
641 DTRACE_PROBE1(nalloc, unsigned int, sip->si_nalloc); in sfxge_intr_init()
657 sip->si_intr_pri = 0; in sfxge_intr_init()
658 for (index = 0; index < sip->si_nalloc; index++) { in sfxge_intr_init()
660 if ((rc = ddi_intr_get_pri(sip->si_table[index], &pri)) != 0) in sfxge_intr_init()
662 if (pri > sip->si_intr_pri) in sfxge_intr_init()
663 sip->si_intr_pri = pri; in sfxge_intr_init()
666 sip->si_state = SFXGE_INTR_INITIALIZED; in sfxge_intr_init()
678 index = sip->si_nalloc; in sfxge_intr_init()
680 err = ddi_intr_free(sip->si_table[index]); in sfxge_intr_init()
685 err, (void *)sip->si_table[index], index, in sfxge_intr_init()
686 sip->si_nalloc); in sfxge_intr_init()
688 sip->si_table[index] = NULL; in sfxge_intr_init()
690 sip->si_nalloc = 0; in sfxge_intr_init()
698 kmem_free(sip->si_table, sip->si_table_size); in sfxge_intr_init()
699 sip->si_table = NULL; in sfxge_intr_init()
700 sip->si_table_size = 0; in sfxge_intr_init()
706 sip->si_type = EFX_INTR_INVALID; in sfxge_intr_init()
711 SFXGE_OBJ_CHECK(sip, sfxge_intr_t); in sfxge_intr_init()
719 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_start() local
722 ASSERT3U(sip->si_state, ==, SFXGE_INTR_INITIALIZED); in sfxge_intr_start()
728 sip->si_state = SFXGE_INTR_TESTING; in sfxge_intr_start()
734 sip->si_state = SFXGE_INTR_STARTED; in sfxge_intr_start()
747 sip->si_state = SFXGE_INTR_INITIALIZED; in sfxge_intr_start()
755 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_stop() local
757 ASSERT3U(sip->si_state, ==, SFXGE_INTR_STARTED); in sfxge_intr_stop()
759 sip->si_state = SFXGE_INTR_INITIALIZED; in sfxge_intr_stop()
771 sfxge_intr_t *sip = &(sp->s_intr); in sfxge_intr_fini() local
772 efsys_mem_t *esmp = &(sip->si_mem); in sfxge_intr_fini()
776 ASSERT3U(sip->si_state, ==, SFXGE_INTR_INITIALIZED); in sfxge_intr_fini()
778 sip->si_state = SFXGE_INTR_UNINITIALIZED; in sfxge_intr_fini()
787 index = sip->si_nalloc; in sfxge_intr_fini()
789 err = ddi_intr_free(sip->si_table[index]); in sfxge_intr_fini()
794 err, (void *)sip->si_table[index], in sfxge_intr_fini()
795 index, sip->si_nalloc); in sfxge_intr_fini()
797 sip->si_table[index] = NULL; in sfxge_intr_fini()
799 sip->si_nalloc = 0; in sfxge_intr_fini()
804 kmem_free(sip->si_table, sip->si_table_size); in sfxge_intr_fini()
805 sip->si_table = NULL; in sfxge_intr_fini()
806 sip->si_table_size = 0; in sfxge_intr_fini()
809 sip->si_type = EFX_INTR_INVALID; in sfxge_intr_fini()
811 SFXGE_OBJ_CHECK(sip, sfxge_intr_t); in sfxge_intr_fini()