Lines Matching defs:evtchn
84 unsigned short evtchn; /* event channel */
123 static struct irq_info mk_evtchn_info(unsigned short evtchn)
125 return (struct irq_info) { .type = IRQT_EVTCHN, .evtchn = evtchn,
129 static struct irq_info mk_ipi_info(unsigned short evtchn, enum ipi_vector ipi)
131 return (struct irq_info) { .type = IRQT_IPI, .evtchn = evtchn,
135 static struct irq_info mk_virq_info(unsigned short evtchn, unsigned short virq)
137 return (struct irq_info) { .type = IRQT_VIRQ, .evtchn = evtchn,
141 static struct irq_info mk_pirq_info(unsigned short evtchn,
144 return (struct irq_info) { .type = IRQT_PIRQ, .evtchn = evtchn,
158 return info_for_irq(irq)->evtchn;
161 unsigned irq_from_evtchn(unsigned int evtchn)
163 return evtchn_to_irq[evtchn];
217 static unsigned int cpu_from_evtchn(unsigned int evtchn)
219 int irq = evtchn_to_irq[evtchn];
296 int evtchn = evtchn_from_irq(irq);
298 if (VALID_EVTCHN(evtchn))
299 notify_remote_via_evtchn(evtchn);
369 int bind_evtchn_to_irq(unsigned int evtchn)
375 irq = evtchn_to_irq[evtchn];
383 evtchn_to_irq[evtchn] = irq;
384 irq_info[irq] = mk_evtchn_info(evtchn);
396 int evtchn, irq;
414 evtchn = bind_ipi.port;
416 evtchn_to_irq[evtchn] = irq;
417 irq_info[irq] = mk_ipi_info(evtchn, ipi);
420 bind_evtchn_to_cpu(evtchn, cpu);
432 int evtchn, irq;
444 evtchn = bind_virq.port;
451 evtchn_to_irq[evtchn] = irq;
452 irq_info[irq] = mk_virq_info(evtchn, virq);
456 bind_evtchn_to_cpu(evtchn, cpu);
467 int evtchn = evtchn_from_irq(irq);
471 if (VALID_EVTCHN(evtchn)) {
472 close.port = evtchn;
478 per_cpu(virq_to_irq, cpu_from_evtchn(evtchn))
482 per_cpu(ipi_to_irq, cpu_from_evtchn(evtchn))
490 bind_evtchn_to_cpu(evtchn, 0);
492 evtchn_to_irq[evtchn] = -1;
504 int bind_evtchn_to_irqhandler(unsigned int evtchn,
512 irq = bind_evtchn_to_irq(evtchn);
706 void rebind_evtchn_irq(int evtchn, int irq)
716 /* After resume the irq<->evtchn mappings are all cleared out */
717 BUG_ON(evtchn_to_irq[evtchn] != -1);
722 evtchn_to_irq[evtchn] = irq;
723 irq_info[irq] = mk_evtchn_info(evtchn);
734 /* Rebind an evtchn so that it gets delivered to a specific cpu */
738 int evtchn = evtchn_from_irq(irq);
742 if (!VALID_EVTCHN(evtchn) ||
747 bind_vcpu.port = evtchn;
756 bind_evtchn_to_cpu(evtchn, tcpu);
770 int masked, evtchn = evtchn_from_irq(irq);
773 if (!VALID_EVTCHN(evtchn))
776 masked = sync_test_and_set_bit(evtchn, s->evtchn_mask);
777 sync_set_bit(evtchn, s->evtchn_pending);
779 unmask_evtchn(evtchn);
786 int evtchn = evtchn_from_irq(irq);
788 if (VALID_EVTCHN(evtchn))
789 unmask_evtchn(evtchn);
794 int evtchn = evtchn_from_irq(irq);
796 if (VALID_EVTCHN(evtchn))
797 mask_evtchn(evtchn);
802 int evtchn = evtchn_from_irq(irq);
806 if (VALID_EVTCHN(evtchn))
807 clear_evtchn(evtchn);
812 int evtchn = evtchn_from_irq(irq);
816 if (VALID_EVTCHN(evtchn)) {
819 masked = sync_test_and_set_bit(evtchn, sh->evtchn_mask);
820 sync_set_bit(evtchn, sh->evtchn_pending);
822 unmask_evtchn(evtchn);
832 int virq, irq, evtchn;
846 evtchn = bind_virq.port;
849 evtchn_to_irq[evtchn] = irq;
850 irq_info[irq] = mk_virq_info(evtchn, virq);
851 bind_evtchn_to_cpu(evtchn, cpu);
854 unmask_evtchn(evtchn);
861 int ipi, irq, evtchn;
874 evtchn = bind_ipi.port;
877 evtchn_to_irq[evtchn] = irq;
878 irq_info[irq] = mk_ipi_info(evtchn, ipi);
879 bind_evtchn_to_cpu(evtchn, cpu);
882 unmask_evtchn(evtchn);
890 int evtchn = evtchn_from_irq(irq);
892 if (VALID_EVTCHN(evtchn))
893 clear_evtchn(evtchn);
898 int evtchn = evtchn_from_irq(irq);
900 if (VALID_EVTCHN(evtchn))
901 set_evtchn(evtchn);
906 int evtchn = evtchn_from_irq(irq);
909 if (VALID_EVTCHN(evtchn))
910 ret = test_evtchn(evtchn);
919 evtchn_port_t evtchn = evtchn_from_irq(irq);
921 if (VALID_EVTCHN(evtchn)) {
926 set_xen_guest_handle(poll.ports, &evtchn);
935 unsigned int cpu, irq, evtchn;
940 for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++)
941 mask_evtchn(evtchn);
945 irq_info[irq].evtchn = 0; /* zap event-channel binding */
947 for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++)
948 evtchn_to_irq[evtchn] = -1;