Lines Matching defs:irq
144 * have a one-IRQ to many-evtchn mapping. We only track evtchn->irq for
177 #define IRQ_IS_CPUPOKE(irq) (ipi_info[XC_CPUPOKE_PIL].mi_irq == (irq))
366 alloc_irq_evtchn(int irq, int index, int evtchn, int cpu)
368 irq_info_t *irqp = &irq_info[irq];
384 evtchn_to_irq[evtchn] = irq;
400 int irq;
406 for (irq = 0; irq < NR_IRQS; irq++) {
407 if (irq_info[irq].ii_type == IRQT_UNBOUND)
411 if (irq == NR_IRQS)
414 irqp = &irq_info[irq];
418 * Set irq/has_handler field to zero which means handler not installed
422 alloc_irq_evtchn(irq, index, evtchn, cpu);
423 return (irq);
450 ec_is_edge_pirq(int irq)
452 return (irq_info[irq].ii_type == IRQT_PIRQ &&
453 !TEST_EVTCHN_BIT(irq, &pirq_needs_eoi[0]));
478 eoi.irq = pirq;
488 irq_status.irq = pirq;
496 end_pirq(int irq)
498 int evtchn = irq_evtchn(&irq_info[irq]);
503 if (TEST_EVTCHN_BIT(irq, &pirq_needs_eoi[0])) {
505 pirq_unmask_notify(IRQ_TO_PIRQ(irq));
521 * Set up a physical device irq to be associated with an event channel.
524 ec_setup_pirq(int irq, int ipl, cpuset_t *cpusp)
527 irq_info_t *irqp = &irq_info[irq];
533 * done for this irq on a previous trip through this code.
536 evtchn = xen_bind_pirq(irq);
538 pirq_query_unmask(IRQ_TO_PIRQ(irq));
543 evtchn_to_irq[evtchn] = irq;
545 ec_set_irq_affinity(irq, *cpusp);
546 ec_enable_irq(irq);
547 pirq_unmask_notify(IRQ_TO_PIRQ(irq));
550 cmn_err(CE_NOTE, "!IRQ%d is shared", irq);
558 ec_unbind_irq(int irq)
560 irq_info_t *irqp = &irq_info[irq];
579 /* There's only one event channel associated with this irq */
608 ec_set_irq_affinity(int irq, cpuset_t dest)
611 irq_info_t *irqp = &irq_info[irq];
615 ASSERT(irq < NR_IRQS);
649 ec_set_irq_priority(int irq, int pri)
653 if (irq >= NR_IRQS)
656 irqp = &irq_info[irq];
667 ec_clear_irq_priority(int irq)
669 irq_info_t *irqp = &irq_info[irq];
671 ASSERT(irq < NR_IRQS);
769 ec_irq_rebindable(int irq)
771 irq_info_t *irqp = &irq_info[irq];
784 ec_irq_needs_rebind(int irq, int cpu)
786 irq_info_t *irqp = &irq_info[irq];
788 return (ec_irq_rebindable(irq) &&
814 ec_irq_add_evtchn(int irq, int evtchn)
821 ASSERT(irq == ec_dev_irq);
823 alloc_irq_evtchn(irq, 0, evtchn, 0);
828 irq_info[irq].ii_u.evtchn = 0;
833 ec_irq_rm_evtchn(int irq, int evtchn)
838 ASSERT(irq == ec_dev_irq);
864 * Force the evtchn to zero for the special evtchn device irq
871 ec_enable_irq(unsigned int irq)
874 irq_info_t *irqp = &irq_info[irq];
885 ec_disable_irq(unsigned int irq)
887 irq_info_t *irqp = &irq_info[irq];
912 ec_pending_irq(unsigned int irq)
914 int evtchn = irq_evtchn(&irq_info[irq]);
920 ec_clear_irq(int irq)
922 irq_info_t *irqp = &irq_info[irq];
937 ec_unmask_irq(int irq)
940 irq_info_t *irqp = &irq_info[irq];
945 end_pirq(irq);
957 ec_try_unmask_irq(int irq)
960 irq_info_t *irqp = &irq_info[irq];
966 end_pirq(irq);
1090 * The debug irq is special, we only have one evtchn and irq but we allow all
1219 int irq;
1221 irq = ec_bind_virq_to_irq(VIRQ_DEBUG, 0);
1223 "debug", irq, NULL, NULL, NULL, NULL);
1226 share_virq(&virq_info[irq_info[irq].ii_u.index]);
1228 ec_debug_irq = irq;
1256 int i, j, port, pri, curpri, irq, sipri;
1297 irq = evtchn_to_irq[port];
1300 * If no irq set, just ignore the event.
1303 * so there will be an irq associated with user mode
1306 if (irq == INVALID_IRQ) {
1315 if (!irq_info[irq].ii_u2.has_handler) {
1318 if (IRQ_IS_CPUPOKE(irq)) {
1333 pri = irq_info[irq].ii_u2.ipl;
1356 if (ec_is_edge_pirq(irq)) {
1408 irq = evtchn_to_irq[port];
1409 if (irq == INVALID_IRQ) {
1419 if (irq == ec_dev_irq) {
1428 rp->r_trapno = irq;
1561 ec_block_irq(int irq)
1563 irq_info_t *irqp = &irq_info[irq];
1577 ec_unpend_irq(int irq)
1579 irq_info_t *irqp = &irq_info[irq];