Lines Matching refs:evtchn
111 evtchn_port_t evtchn; /* event channel */ member
215 static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq) in set_evtchn_to_irq() argument
221 if (evtchn >= xen_evtchn_max_channels()) in set_evtchn_to_irq()
224 row = EVTCHN_ROW(evtchn); in set_evtchn_to_irq()
225 col = EVTCHN_COL(evtchn); in set_evtchn_to_irq()
267 static struct irq_info *evtchn_to_info(evtchn_port_t evtchn) in evtchn_to_info() argument
271 if (evtchn >= xen_evtchn_max_channels()) in evtchn_to_info()
273 if (evtchn_to_irq[EVTCHN_ROW(evtchn)] == NULL) in evtchn_to_info()
275 irq = READ_ONCE(evtchn_to_irq[EVTCHN_ROW(evtchn)][EVTCHN_COL(evtchn)]); in evtchn_to_info()
330 evtchn_port_t evtchn, in xen_irq_info_common_setup() argument
338 info->evtchn = evtchn; in xen_irq_info_common_setup()
343 ret = set_evtchn_to_irq(evtchn, info->irq); in xen_irq_info_common_setup()
349 return xen_evtchn_port_setup(evtchn); in xen_irq_info_common_setup()
353 evtchn_port_t evtchn, in xen_irq_info_evtchn_setup() argument
358 ret = xen_irq_info_common_setup(info, IRQT_EVTCHN, evtchn, 0); in xen_irq_info_evtchn_setup()
367 evtchn_port_t evtchn, enum ipi_vector ipi) in xen_irq_info_ipi_setup() argument
372 per_cpu(ipi_to_evtchn, cpu)[ipi] = evtchn; in xen_irq_info_ipi_setup()
374 return xen_irq_info_common_setup(info, IRQT_IPI, evtchn, 0); in xen_irq_info_ipi_setup()
378 evtchn_port_t evtchn, unsigned int virq) in xen_irq_info_virq_setup() argument
384 return xen_irq_info_common_setup(info, IRQT_VIRQ, evtchn, 0); in xen_irq_info_virq_setup()
387 static int xen_irq_info_pirq_setup(struct irq_info *info, evtchn_port_t evtchn, in xen_irq_info_pirq_setup() argument
396 return xen_irq_info_common_setup(info, IRQT_PIRQ, evtchn, 0); in xen_irq_info_pirq_setup()
401 set_evtchn_to_irq(info->evtchn, -1); in xen_irq_info_cleanup()
402 xen_evtchn_port_remove(info->evtchn, info->cpu); in xen_irq_info_cleanup()
403 info->evtchn = 0; in xen_irq_info_cleanup()
419 return info->evtchn; in evtchn_from_irq()
422 unsigned int irq_from_evtchn(evtchn_port_t evtchn) in irq_from_evtchn() argument
424 struct irq_info *info = evtchn_to_info(evtchn); in irq_from_evtchn()
431 evtchn_port_t *evtchn) in irq_evtchn_from_virq() argument
435 *evtchn = evtchn_from_irq(irq); in irq_evtchn_from_virq()
464 unsigned int cpu_from_evtchn(evtchn_port_t evtchn) in cpu_from_evtchn() argument
466 struct irq_info *info = evtchn_to_info(evtchn); in cpu_from_evtchn()
478 mask_evtchn(info->evtchn); in do_mask()
494 unmask_evtchn(info->evtchn); in do_unmask()
523 xen_evtchn_port_bind_to_cpu(info->evtchn, cpu, info->cpu); in bind_evtchn_to_cpu()
540 evtchn_port_t evtchn = evtchn_from_irq(irq); in notify_remote_via_irq() local
542 if (VALID_EVTCHN(evtchn)) in notify_remote_via_irq()
543 notify_remote_via_evtchn(evtchn); in notify_remote_via_irq()
599 evtchn_port_t evtchn; in xen_irq_lateeoi_locked() local
603 evtchn = info->evtchn; in xen_irq_lateeoi_locked()
604 if (!VALID_EVTCHN(evtchn) || !list_empty(&info->eoi_list)) in xen_irq_lateeoi_locked()
798 clear_evtchn(info->evtchn); in event_handler_exit()
819 if (!VALID_EVTCHN(info->evtchn)) in do_eoi_pirq()
839 if (VALID_EVTCHN(info->evtchn)) in do_disable_dynirq()
864 evtchn_port_t evtchn = info->evtchn; in __startup_pirq() local
867 if (VALID_EVTCHN(evtchn)) in __startup_pirq()
879 evtchn = bind_pirq.port; in __startup_pirq()
883 rc = set_evtchn_to_irq(evtchn, info->irq); in __startup_pirq()
887 info->evtchn = evtchn; in __startup_pirq()
890 rc = xen_evtchn_port_setup(evtchn); in __startup_pirq()
904 xen_evtchn_close(evtchn); in __startup_pirq()
918 evtchn_port_t evtchn = info->evtchn; in shutdown_pirq() local
922 if (!VALID_EVTCHN(evtchn)) in shutdown_pirq()
927 xen_evtchn_close(evtchn); in shutdown_pirq()
958 evtchn_port_t evtchn; in __unbind_from_irq() local
972 evtchn = info->evtchn; in __unbind_from_irq()
974 if (VALID_EVTCHN(evtchn)) { in __unbind_from_irq()
1001 xen_evtchn_close(evtchn); in __unbind_from_irq()
1192 static int bind_evtchn_to_irq_chip(evtchn_port_t evtchn, struct irq_chip *chip, in bind_evtchn_to_irq_chip() argument
1198 if (evtchn >= xen_evtchn_max_channels()) in bind_evtchn_to_irq_chip()
1203 info = evtchn_to_info(evtchn); in bind_evtchn_to_irq_chip()
1213 ret = xen_irq_info_evtchn_setup(info, evtchn, dev); in bind_evtchn_to_irq_chip()
1239 int bind_evtchn_to_irq(evtchn_port_t evtchn) in bind_evtchn_to_irq() argument
1241 return bind_evtchn_to_irq_chip(evtchn, &xen_dynamic_chip, NULL, false); in bind_evtchn_to_irq()
1245 int bind_evtchn_to_irq_lateeoi(evtchn_port_t evtchn) in bind_evtchn_to_irq_lateeoi() argument
1247 return bind_evtchn_to_irq_chip(evtchn, &xen_lateeoi_chip, NULL, false); in bind_evtchn_to_irq_lateeoi()
1254 evtchn_port_t evtchn; in bind_ipi_to_irq() local
1274 evtchn = bind_ipi.port; in bind_ipi_to_irq()
1276 ret = xen_irq_info_ipi_setup(info, cpu, evtchn, ipi); in bind_ipi_to_irq()
1323 static int find_virq(unsigned int virq, unsigned int cpu, evtchn_port_t *evtchn) in find_virq() argument
1339 *evtchn = port; in find_virq()
1362 evtchn_port_t evtchn = 0; in bind_virq_to_irq() local
1387 evtchn = bind_virq.port; in bind_virq_to_irq()
1390 ret = find_virq(virq, cpu, &evtchn); in bind_virq_to_irq()
1394 ret = xen_irq_info_virq_setup(info, cpu, evtchn, virq); in bind_virq_to_irq()
1427 static int bind_evtchn_to_irqhandler_chip(evtchn_port_t evtchn, in bind_evtchn_to_irqhandler_chip() argument
1435 irq = bind_evtchn_to_irq_chip(evtchn, chip, NULL, in bind_evtchn_to_irqhandler_chip()
1448 int bind_evtchn_to_irqhandler(evtchn_port_t evtchn, in bind_evtchn_to_irqhandler() argument
1453 return bind_evtchn_to_irqhandler_chip(evtchn, handler, irqflags, in bind_evtchn_to_irqhandler()
1459 int bind_evtchn_to_irqhandler_lateeoi(evtchn_port_t evtchn, in bind_evtchn_to_irqhandler_lateeoi() argument
1464 return bind_evtchn_to_irqhandler_chip(evtchn, handler, irqflags, in bind_evtchn_to_irqhandler_lateeoi()
1574 int evtchn_make_refcounted(evtchn_port_t evtchn, bool is_static) in evtchn_make_refcounted() argument
1576 struct irq_info *info = evtchn_to_info(evtchn); in evtchn_make_refcounted()
1590 int evtchn_get(evtchn_port_t evtchn) in evtchn_get() argument
1595 if (evtchn >= xen_evtchn_max_channels()) in evtchn_get()
1600 info = evtchn_to_info(evtchn); in evtchn_get()
1618 void evtchn_put(evtchn_port_t evtchn) in evtchn_put() argument
1620 struct irq_info *info = evtchn_to_info(evtchn); in evtchn_put()
1630 evtchn_port_t evtchn; in xen_send_IPI_one() local
1641 evtchn = per_cpu(ipi_to_evtchn, cpu)[vector]; in xen_send_IPI_one()
1642 BUG_ON(evtchn == 0); in xen_send_IPI_one()
1643 notify_remote_via_evtchn(evtchn); in xen_send_IPI_one()
1739 void rebind_evtchn_irq(evtchn_port_t evtchn, int irq) in rebind_evtchn_irq() argument
1753 BUG_ON(evtchn_to_info(evtchn)); in rebind_evtchn_irq()
1759 (void)xen_irq_info_evtchn_setup(info, evtchn, NULL); in rebind_evtchn_irq()
1773 evtchn_port_t evtchn = info ? info->evtchn : 0; in xen_rebind_evtchn_to_cpu() local
1775 if (!VALID_EVTCHN(evtchn)) in xen_rebind_evtchn_to_cpu()
1782 bind_vcpu.port = evtchn; in xen_rebind_evtchn_to_cpu()
1848 evtchn_port_t evtchn = info ? info->evtchn : 0; in enable_dynirq() local
1850 if (VALID_EVTCHN(evtchn)) in enable_dynirq()
1856 evtchn_port_t evtchn = info->evtchn; in do_ack_dynirq() local
1858 if (VALID_EVTCHN(evtchn)) in do_ack_dynirq()
1883 evtchn_port_t evtchn = info ? info->evtchn : 0; in lateeoi_ack_dynirq() local
1885 if (VALID_EVTCHN(evtchn)) { in lateeoi_ack_dynirq()
1892 clear_evtchn(evtchn); in lateeoi_ack_dynirq()
1899 evtchn_port_t evtchn = info ? info->evtchn : 0; in lateeoi_mask_ack_dynirq() local
1901 if (VALID_EVTCHN(evtchn)) { in lateeoi_mask_ack_dynirq()
1910 evtchn_port_t evtchn = info ? info->evtchn : 0; in retrigger_dynirq() local
1912 if (!VALID_EVTCHN(evtchn)) in retrigger_dynirq()
1916 set_evtchn(evtchn); in retrigger_dynirq()
1963 evtchn_port_t evtchn; in restore_cpu_virqs() local
1980 evtchn = bind_virq.port; in restore_cpu_virqs()
1983 xen_irq_info_virq_setup(info, cpu, evtchn, virq); in restore_cpu_virqs()
1992 evtchn_port_t evtchn; in restore_cpu_ipis() local
2008 evtchn = bind_ipi.port; in restore_cpu_ipis()
2011 xen_irq_info_ipi_setup(info, cpu, evtchn, ipi); in restore_cpu_ipis()
2021 evtchn_port_t evtchn = info ? info->evtchn : 0; in xen_clear_irq_pending() local
2023 if (VALID_EVTCHN(evtchn)) in xen_clear_irq_pending()
2030 evtchn_port_t evtchn = evtchn_from_irq(irq); in xen_test_irq_pending() local
2033 if (VALID_EVTCHN(evtchn)) in xen_test_irq_pending()
2034 ret = test_evtchn(evtchn); in xen_test_irq_pending()
2043 evtchn_port_t evtchn = evtchn_from_irq(irq); in xen_poll_irq_timeout() local
2045 if (VALID_EVTCHN(evtchn)) { in xen_poll_irq_timeout()
2050 set_xen_guest_handle(poll.ports, &evtchn); in xen_poll_irq_timeout()
2092 info->evtchn = 0; in xen_irq_resume()
2265 evtchn_port_t evtchn; in xen_init_IRQ() local
2285 for (evtchn = 0; evtchn < xen_evtchn_nr_channels(); evtchn++) in xen_init_IRQ()
2286 mask_evtchn(evtchn); in xen_init_IRQ()