Lines Matching defs:is
6 * This code is derived from software contributed to The NetBSD Foundation
10 * This material is based upon work supported by the Defense Advanced Research
758 struct intr_source * const is = &e500_intr_sources[ii.irq_vector];
760 if (is->is_ipl != IPL_NONE) {
761 /* XXX IPI0 is shared by all CPU. */
762 if (is->is_ist != IST_IPI ||
763 is->is_irq != irq ||
764 is->is_ipl != ipl ||
765 is->is_ist != ist ||
766 is->is_func != handler ||
767 is->is_arg != arg) {
773 is->is_func = handler;
774 is->is_arg = arg;
775 is->is_ipl = ipl;
776 is->is_ist = ist;
777 is->is_irq = irq;
778 is->is_refcnt++;
779 is->is_vpr = ii.irq_vpr;
780 is->is_dr = ii.irq_dr;
785 snprintf(is->is_source, sizeof(is->is_source), "extirq %d",
789 snprintf(is->is_source, sizeof(is->is_source), "irq %d", irq);
792 snprintf(is->is_source, sizeof(is->is_source), "msigroup %d",
796 snprintf(is->is_source, sizeof(is->is_source), "timer %d", irq);
799 snprintf(is->is_source, sizeof(is->is_source), "ipi %d", irq);
802 snprintf(is->is_source, sizeof(is->is_source), "mi %d", irq);
808 strlcpy(is->is_xname, xname, sizeof(is->is_xname));
845 return is;
860 struct intr_source * const is = vis;
863 KASSERT(e500_intr_sources <= is);
864 KASSERT(is < e500_intr_last_source);
867 bool ok = e500_intr_irq_info_get(curcpu(), is->is_irq, is->is_ipl,
868 is->is_ist, &ii);
871 KASSERT(is - e500_intr_sources == ii.irq_vector);
875 if (is->is_refcnt-- > 1) {
898 *is = (struct intr_source)INTR_SOURCE_INITIALIZER;
961 panic("%s(%p): MSR[EE] is on (%#lx)!", __func__, tf, mfmsr());
1000 struct intr_source * const is = &e500_intr_sources[irq];
1001 if (__predict_true(is < e500_intr_last_source)) {
1006 KASSERTMSG(is->is_ipl == ipl,
1007 "iack %#x: is %p: irq %d ipl %d != iack ipl %d",
1008 iack, is, irq, is->is_ipl, ipl);
1009 void *arg = (is->is_ist == IST_TIMER ? tf : is->is_arg);
1010 if (is->is_ipl <= old_ipl)
1011 panic("%s(%p): %s (%u): is->is_ipl (%u) <= old_ipl (%u)\n",
1014 is->is_ipl, old_ipl);
1015 KASSERT(is->is_ipl > old_ipl);
1016 e500_splset(ci, is->is_ipl); /* change IPL */
1017 if (__predict_false(is->is_func == NULL)) {
1022 int (*func)(void *) = is->is_func;
1043 * If this is a nested interrupt, simply ack it and exit
1100 struct intr_source *is;
1178 is = kmem_zalloc(nirq * sizeof(*is), KM_SLEEP);
1179 e500_intr_sources = is;
1180 e500_intr_last_source = is + nirq;
1199 * timer's DR is set to be delivered to cpu0 as initial value.
1459 e500_intr_get_affinity(struct intr_source *is, kcpuset_t *cpuset)
1467 if (is->is_ipl != IPL_NONE && !IST_PERCPU_P(is->is_ist)) {
1468 if (e500_intr_irq_info_get(ci, is->is_irq, is->is_ipl,
1469 is->is_ist, &ii)) {
1483 e500_intr_set_affinity(struct intr_source *is, const kcpuset_t *cpuset)
1509 if (!e500_intr_irq_info_get(ci, is->is_irq, is->is_ipl, is->is_ist,
1544 e500_intr_is_affinity_intrsource(struct intr_source *is,
1552 if (is->is_ipl != IPL_NONE && !IST_PERCPU_P(is->is_ist)) {
1553 if (e500_intr_irq_info_get(ci, is->is_irq, is->is_ipl,
1554 is->is_ist, &ii)) {
1571 struct intr_source *is;
1574 for (is = e500_intr_sources; is < e500_intr_last_source; ++is) {
1575 if (is->is_source[0] == '\0')
1578 if (!strncmp(intrid, is->is_source, sizeof(is->is_source) - 1))
1581 if (is == e500_intr_last_source)
1582 is = NULL;
1584 return is;
1592 struct intr_source *is;
1595 is = e500_intr_get_source(intrid);
1596 if (is == NULL)
1599 if (e500_intr_irq_info_get(ci, is->is_irq, is->is_ipl, is->is_ist, &ii))
1607 struct intr_source *is;
1611 is = e500_intr_get_source(intrid);
1612 if (is == NULL)
1616 e500_intr_get_affinity(is, cpuset);
1639 struct intr_source *is;
1646 is = e500_intr_get_source(intrid);
1647 if (is != NULL)
1648 strlcpy(buf, is->is_xname, len);
1654 struct intr_source *is;
1664 for (is = e500_intr_sources; is < e500_intr_last_source; ++is) {
1665 if (e500_intr_is_affinity_intrsource(is, cpuset))
1678 for (i = 0, is = e500_intr_sources;
1679 i < n && is < e500_intr_last_source;
1680 ++is) {
1681 if (!e500_intr_is_affinity_intrsource(is, cpuset))
1684 if (is->is_source[0] != '\0') {
1685 strlcpy(ids[i], is->is_source, sizeof(ids[0]));
1707 interrupt_distribute_locked(struct intr_source *is, const kcpuset_t *newset,
1714 if (is->is_ipl == IPL_NONE || IST_PERCPU_P(is->is_ist))
1719 e500_intr_get_affinity(is, oldset);
1720 error = e500_intr_set_affinity(is, newset);
1742 struct intr_source *is;
1745 is = e500_intr_get_source(intrid);
1746 if (is != NULL) {
1748 error = interrupt_distribute_locked(is, newset, oldset);