Lines Matching full:irq
9 * chip. When an event is received, it is mapped to an irq and sent
29 #include <linux/irq.h>
46 #include <asm/irq.h>
84 * Packed IRQ information:
86 * event channel - irq->event channel mapping
89 * PIRQ - vector, with MSB being "needs EIO", or physical IRQ of the HVM
90 * guest, or GSI (real passthrough IRQ) of the device.
107 unsigned irq; member
150 * IRQ-desc lock
157 /* IRQ <-> VIRQ mapping. */
160 /* IRQ <-> IPI mapping */
167 static bool (*pirq_needs_eoi)(unsigned irq);
206 static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq) in set_evtchn_to_irq() argument
219 /* Unallocated irq entries return -1 anyway */ in set_evtchn_to_irq()
220 if (irq == -1) in set_evtchn_to_irq()
237 WRITE_ONCE(evtchn_to_irq[row][col], irq); in set_evtchn_to_irq()
250 /* Get info for IRQ */
251 static struct irq_info *info_for_irq(unsigned irq) in info_for_irq() argument
253 if (irq < nr_legacy_irqs()) in info_for_irq()
254 return legacy_info_ptrs[irq]; in info_for_irq()
256 return irq_get_chip_data(irq); in info_for_irq()
259 static void set_info_for_irq(unsigned int irq, struct irq_info *info) in set_info_for_irq() argument
261 if (irq < nr_legacy_irqs()) in set_info_for_irq()
262 legacy_info_ptrs[irq] = info; in set_info_for_irq()
264 irq_set_chip_data(irq, info); in set_info_for_irq()
271 unsigned int irq = info->irq; in delayed_free_irq() local
274 set_info_for_irq(irq, NULL); in delayed_free_irq()
278 /* Legacy IRQ descriptors are managed by the arch. */ in delayed_free_irq()
279 if (irq >= nr_legacy_irqs()) in delayed_free_irq()
280 irq_free_desc(irq); in delayed_free_irq()
283 /* Constructors for packed IRQ information. */
285 unsigned irq, in xen_irq_info_common_setup() argument
295 info->irq = irq; in xen_irq_info_common_setup()
301 ret = set_evtchn_to_irq(evtchn, irq); in xen_irq_info_common_setup()
305 irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN); in xen_irq_info_common_setup()
310 static int xen_irq_info_evtchn_setup(unsigned irq, in xen_irq_info_evtchn_setup() argument
313 struct irq_info *info = info_for_irq(irq); in xen_irq_info_evtchn_setup()
315 return xen_irq_info_common_setup(info, irq, IRQT_EVTCHN, evtchn, 0); in xen_irq_info_evtchn_setup()
319 unsigned irq, in xen_irq_info_ipi_setup() argument
323 struct irq_info *info = info_for_irq(irq); in xen_irq_info_ipi_setup()
327 per_cpu(ipi_to_irq, cpu)[ipi] = irq; in xen_irq_info_ipi_setup()
329 return xen_irq_info_common_setup(info, irq, IRQT_IPI, evtchn, 0); in xen_irq_info_ipi_setup()
333 unsigned irq, in xen_irq_info_virq_setup() argument
337 struct irq_info *info = info_for_irq(irq); in xen_irq_info_virq_setup()
341 per_cpu(virq_to_irq, cpu)[virq] = irq; in xen_irq_info_virq_setup()
343 return xen_irq_info_common_setup(info, irq, IRQT_VIRQ, evtchn, 0); in xen_irq_info_virq_setup()
346 static int xen_irq_info_pirq_setup(unsigned irq, in xen_irq_info_pirq_setup() argument
353 struct irq_info *info = info_for_irq(irq); in xen_irq_info_pirq_setup()
360 return xen_irq_info_common_setup(info, irq, IRQT_PIRQ, evtchn, 0); in xen_irq_info_pirq_setup()
371 * Accessors for packed IRQ information.
373 evtchn_port_t evtchn_from_irq(unsigned irq) in evtchn_from_irq() argument
377 if (likely(irq < nr_irqs)) in evtchn_from_irq()
378 info = info_for_irq(irq); in evtchn_from_irq()
396 static enum ipi_vector ipi_from_irq(unsigned irq) in ipi_from_irq() argument
398 struct irq_info *info = info_for_irq(irq); in ipi_from_irq()
406 static unsigned virq_from_irq(unsigned irq) in virq_from_irq() argument
408 struct irq_info *info = info_for_irq(irq); in virq_from_irq()
416 static unsigned pirq_from_irq(unsigned irq) in pirq_from_irq() argument
418 struct irq_info *info = info_for_irq(irq); in pirq_from_irq()
426 static enum xen_irq_type type_from_irq(unsigned irq) in type_from_irq() argument
428 return info_for_irq(irq)->type; in type_from_irq()
431 static unsigned cpu_from_irq(unsigned irq) in cpu_from_irq() argument
433 return info_for_irq(irq)->cpu; in cpu_from_irq()
438 int irq = get_evtchn_to_irq(evtchn); in cpu_from_evtchn() local
441 if (irq != -1) in cpu_from_evtchn()
442 ret = cpu_from_irq(irq); in cpu_from_evtchn()
476 static bool pirq_check_eoi_map(unsigned irq) in pirq_check_eoi_map() argument
478 return test_bit(pirq_from_irq(irq), pirq_eoi_map); in pirq_check_eoi_map()
482 static bool pirq_needs_eoi_flag(unsigned irq) in pirq_needs_eoi_flag() argument
484 struct irq_info *info = info_for_irq(irq); in pirq_needs_eoi_flag()
492 int irq = get_evtchn_to_irq(evtchn); in bind_evtchn_to_cpu() local
493 struct irq_info *info = info_for_irq(irq); in bind_evtchn_to_cpu()
495 BUG_ON(irq == -1); in bind_evtchn_to_cpu()
497 cpumask_copy(irq_get_affinity_mask(irq), cpumask_of(cpu)); in bind_evtchn_to_cpu()
505 * notify_remote_via_irq - send event to remote end of event channel via irq
506 * @irq: irq of event channel to send event to
512 void notify_remote_via_irq(int irq) in notify_remote_via_irq() argument
514 evtchn_port_t evtchn = evtchn_from_irq(irq); in notify_remote_via_irq()
660 void xen_irq_lateeoi(unsigned int irq, unsigned int eoi_flags) in xen_irq_lateeoi() argument
666 info = info_for_irq(irq); in xen_irq_lateeoi()
675 static void xen_irq_init(unsigned irq) in xen_irq_init() argument
681 cpumask_copy(irq_get_affinity_mask(irq), cpumask_of(0)); in xen_irq_init()
686 panic("Unable to allocate metadata for IRQ%d\n", irq); in xen_irq_init()
692 set_info_for_irq(irq, info); in xen_irq_init()
700 int i, irq = irq_alloc_descs(-1, 0, nvec, -1); in xen_allocate_irqs_dynamic() local
702 if (irq >= 0) { in xen_allocate_irqs_dynamic()
704 xen_irq_init(irq + i); in xen_allocate_irqs_dynamic()
707 return irq; in xen_allocate_irqs_dynamic()
718 int irq; in xen_allocate_irq_gsi() local
723 * all IRQs are dynamically allocated from the entire IRQ in xen_allocate_irq_gsi()
729 /* Legacy IRQ descriptors are already allocated by the arch. */ in xen_allocate_irq_gsi()
731 irq = gsi; in xen_allocate_irq_gsi()
733 irq = irq_alloc_desc_at(gsi, -1); in xen_allocate_irq_gsi()
735 xen_irq_init(irq); in xen_allocate_irq_gsi()
737 return irq; in xen_allocate_irq_gsi()
740 static void xen_free_irq(unsigned irq) in xen_free_irq() argument
742 struct irq_info *info = info_for_irq(irq); in xen_free_irq()
772 static void pirq_query_unmask(int irq) in pirq_query_unmask() argument
775 struct irq_info *info = info_for_irq(irq); in pirq_query_unmask()
779 irq_status.irq = pirq_from_irq(irq); in pirq_query_unmask()
790 struct irq_info *info = info_for_irq(data->irq); in eoi_pirq()
792 struct physdev_eoi eoi = { .irq = pirq_from_irq(data->irq) }; in eoi_pirq()
810 if (pirq_needs_eoi(data->irq)) { in eoi_pirq()
822 static unsigned int __startup_pirq(unsigned int irq) in __startup_pirq() argument
825 struct irq_info *info = info_for_irq(irq); in __startup_pirq()
826 evtchn_port_t evtchn = evtchn_from_irq(irq); in __startup_pirq()
834 bind_pirq.pirq = pirq_from_irq(irq); in __startup_pirq()
840 pr_warn("Failed to obtain physical IRQ %d\n", irq); in __startup_pirq()
845 pirq_query_unmask(irq); in __startup_pirq()
847 rc = set_evtchn_to_irq(evtchn, irq); in __startup_pirq()
861 eoi_pirq(irq_get_irq_data(irq)); in __startup_pirq()
866 pr_err("irq%d: Failed to set port to irq mapping (%d)\n", irq, rc); in __startup_pirq()
873 return __startup_pirq(data->irq); in startup_pirq()
878 unsigned int irq = data->irq; in shutdown_pirq() local
879 struct irq_info *info = info_for_irq(irq); in shutdown_pirq()
880 evtchn_port_t evtchn = evtchn_from_irq(irq); in shutdown_pirq()
911 return info->irq; in xen_irq_from_gsi()
918 static void __unbind_from_irq(unsigned int irq) in __unbind_from_irq() argument
920 evtchn_port_t evtchn = evtchn_from_irq(irq); in __unbind_from_irq()
921 struct irq_info *info = info_for_irq(irq); in __unbind_from_irq()
930 unsigned int cpu = cpu_from_irq(irq); in __unbind_from_irq()
934 switch (type_from_irq(irq)) { in __unbind_from_irq()
936 per_cpu(virq_to_irq, cpu)[virq_from_irq(irq)] = -1; in __unbind_from_irq()
939 per_cpu(ipi_to_irq, cpu)[ipi_from_irq(irq)] = -1; in __unbind_from_irq()
948 xen_free_irq(irq); in __unbind_from_irq()
953 * IRQ number returned here and the Xen pirq argument.
955 * Note: We don't assign an event channel until the irq actually started
956 * up. Return an existing irq if we've already got one for the gsi.
964 int irq = -1; in xen_bind_pirq_gsi_to_irq() local
970 irq = xen_irq_from_gsi(gsi); in xen_bind_pirq_gsi_to_irq()
971 if (irq != -1) { in xen_bind_pirq_gsi_to_irq()
972 pr_info("%s: returning irq %d for gsi %u\n", in xen_bind_pirq_gsi_to_irq()
973 __func__, irq, gsi); in xen_bind_pirq_gsi_to_irq()
977 irq = xen_allocate_irq_gsi(gsi); in xen_bind_pirq_gsi_to_irq()
978 if (irq < 0) in xen_bind_pirq_gsi_to_irq()
981 irq_op.irq = irq; in xen_bind_pirq_gsi_to_irq()
989 xen_free_irq(irq); in xen_bind_pirq_gsi_to_irq()
990 irq = -ENOSPC; in xen_bind_pirq_gsi_to_irq()
994 ret = xen_irq_info_pirq_setup(irq, 0, pirq, gsi, DOMID_SELF, in xen_bind_pirq_gsi_to_irq()
997 __unbind_from_irq(irq); in xen_bind_pirq_gsi_to_irq()
998 irq = ret; in xen_bind_pirq_gsi_to_irq()
1002 pirq_query_unmask(irq); in xen_bind_pirq_gsi_to_irq()
1019 irq_set_chip_and_handler_name(irq, &xen_pirq_chip, in xen_bind_pirq_gsi_to_irq()
1022 irq_set_chip_and_handler_name(irq, &xen_pirq_chip, in xen_bind_pirq_gsi_to_irq()
1028 return irq; in xen_bind_pirq_gsi_to_irq()
1049 int i, irq, ret; in xen_bind_pirq_msi_to_irq() local
1053 irq = xen_allocate_irqs_dynamic(nvec); in xen_bind_pirq_msi_to_irq()
1054 if (irq < 0) in xen_bind_pirq_msi_to_irq()
1058 irq_set_chip_and_handler_name(irq + i, &xen_pirq_chip, handle_edge_irq, name); in xen_bind_pirq_msi_to_irq()
1060 ret = xen_irq_info_pirq_setup(irq + i, 0, pirq + i, 0, domid, in xen_bind_pirq_msi_to_irq()
1066 ret = irq_set_msi_desc(irq, msidesc); in xen_bind_pirq_msi_to_irq()
1071 return irq; in xen_bind_pirq_msi_to_irq()
1074 __unbind_from_irq(irq + nvec); in xen_bind_pirq_msi_to_irq()
1080 int xen_destroy_irq(int irq) in xen_destroy_irq() argument
1083 struct irq_info *info = info_for_irq(irq); in xen_destroy_irq()
1105 pr_warn("unmap irq failed %d\n", rc); in xen_destroy_irq()
1110 xen_free_irq(irq); in xen_destroy_irq()
1119 int irq; in xen_irq_from_pirq() local
1128 irq = info->irq; in xen_irq_from_pirq()
1132 irq = -1; in xen_irq_from_pirq()
1136 return irq; in xen_irq_from_pirq()
1140 int xen_pirq_from_irq(unsigned irq) in xen_pirq_from_irq() argument
1142 return pirq_from_irq(irq); in xen_pirq_from_irq()
1148 int irq; in bind_evtchn_to_irq_chip() local
1156 irq = get_evtchn_to_irq(evtchn); in bind_evtchn_to_irq_chip()
1158 if (irq == -1) { in bind_evtchn_to_irq_chip()
1159 irq = xen_allocate_irq_dynamic(); in bind_evtchn_to_irq_chip()
1160 if (irq < 0) in bind_evtchn_to_irq_chip()
1163 irq_set_chip_and_handler_name(irq, chip, in bind_evtchn_to_irq_chip()
1166 ret = xen_irq_info_evtchn_setup(irq, evtchn); in bind_evtchn_to_irq_chip()
1168 __unbind_from_irq(irq); in bind_evtchn_to_irq_chip()
1169 irq = ret; in bind_evtchn_to_irq_chip()
1175 struct irq_info *info = info_for_irq(irq); in bind_evtchn_to_irq_chip()
1182 return irq; in bind_evtchn_to_irq_chip()
1201 int ret, irq; in bind_ipi_to_irq() local
1205 irq = per_cpu(ipi_to_irq, cpu)[ipi]; in bind_ipi_to_irq()
1207 if (irq == -1) { in bind_ipi_to_irq()
1208 irq = xen_allocate_irq_dynamic(); in bind_ipi_to_irq()
1209 if (irq < 0) in bind_ipi_to_irq()
1212 irq_set_chip_and_handler_name(irq, &xen_percpu_chip, in bind_ipi_to_irq()
1221 ret = xen_irq_info_ipi_setup(cpu, irq, evtchn, ipi); in bind_ipi_to_irq()
1223 __unbind_from_irq(irq); in bind_ipi_to_irq()
1224 irq = ret; in bind_ipi_to_irq()
1229 struct irq_info *info = info_for_irq(irq); in bind_ipi_to_irq()
1235 return irq; in bind_ipi_to_irq()
1303 int irq, ret; in bind_virq_to_irq() local
1307 irq = per_cpu(virq_to_irq, cpu)[virq]; in bind_virq_to_irq()
1309 if (irq == -1) { in bind_virq_to_irq()
1310 irq = xen_allocate_irq_dynamic(); in bind_virq_to_irq()
1311 if (irq < 0) in bind_virq_to_irq()
1315 irq_set_chip_and_handler_name(irq, &xen_percpu_chip, in bind_virq_to_irq()
1318 irq_set_chip_and_handler_name(irq, &xen_dynamic_chip, in bind_virq_to_irq()
1333 ret = xen_irq_info_virq_setup(cpu, irq, evtchn, virq); in bind_virq_to_irq()
1335 __unbind_from_irq(irq); in bind_virq_to_irq()
1336 irq = ret; in bind_virq_to_irq()
1342 struct irq_info *info = info_for_irq(irq); in bind_virq_to_irq()
1349 return irq; in bind_virq_to_irq()
1352 static void unbind_from_irq(unsigned int irq) in unbind_from_irq() argument
1355 __unbind_from_irq(irq); in unbind_from_irq()
1365 int irq, retval; in bind_evtchn_to_irqhandler_chip() local
1367 irq = bind_evtchn_to_irq_chip(evtchn, chip); in bind_evtchn_to_irqhandler_chip()
1368 if (irq < 0) in bind_evtchn_to_irqhandler_chip()
1369 return irq; in bind_evtchn_to_irqhandler_chip()
1370 retval = request_irq(irq, handler, irqflags, devname, dev_id); in bind_evtchn_to_irqhandler_chip()
1372 unbind_from_irq(irq); in bind_evtchn_to_irqhandler_chip()
1376 return irq; in bind_evtchn_to_irqhandler_chip()
1406 int irq, retval; in bind_interdomain_evtchn_to_irqhandler_chip() local
1408 irq = bind_interdomain_evtchn_to_irq_chip(remote_domain, remote_port, in bind_interdomain_evtchn_to_irqhandler_chip()
1410 if (irq < 0) in bind_interdomain_evtchn_to_irqhandler_chip()
1411 return irq; in bind_interdomain_evtchn_to_irqhandler_chip()
1413 retval = request_irq(irq, handler, irqflags, devname, dev_id); in bind_interdomain_evtchn_to_irqhandler_chip()
1415 unbind_from_irq(irq); in bind_interdomain_evtchn_to_irqhandler_chip()
1419 return irq; in bind_interdomain_evtchn_to_irqhandler_chip()
1439 int irq, retval; in bind_virq_to_irqhandler() local
1441 irq = bind_virq_to_irq(virq, cpu, irqflags & IRQF_PERCPU); in bind_virq_to_irqhandler()
1442 if (irq < 0) in bind_virq_to_irqhandler()
1443 return irq; in bind_virq_to_irqhandler()
1444 retval = request_irq(irq, handler, irqflags, devname, dev_id); in bind_virq_to_irqhandler()
1446 unbind_from_irq(irq); in bind_virq_to_irqhandler()
1450 return irq; in bind_virq_to_irqhandler()
1461 int irq, retval; in bind_ipi_to_irqhandler() local
1463 irq = bind_ipi_to_irq(ipi, cpu); in bind_ipi_to_irqhandler()
1464 if (irq < 0) in bind_ipi_to_irqhandler()
1465 return irq; in bind_ipi_to_irqhandler()
1468 retval = request_irq(irq, handler, irqflags, devname, dev_id); in bind_ipi_to_irqhandler()
1470 unbind_from_irq(irq); in bind_ipi_to_irqhandler()
1474 return irq; in bind_ipi_to_irqhandler()
1477 void unbind_from_irqhandler(unsigned int irq, void *dev_id) in unbind_from_irqhandler() argument
1479 struct irq_info *info = info_for_irq(irq); in unbind_from_irqhandler()
1483 free_irq(irq, dev_id); in unbind_from_irqhandler()
1484 unbind_from_irq(irq); in unbind_from_irqhandler()
1490 * @irq:irq bound to an event channel.
1493 int xen_set_irq_priority(unsigned irq, unsigned priority) in xen_set_irq_priority() argument
1497 set_priority.port = evtchn_from_irq(irq); in xen_set_irq_priority()
1507 int irq = get_evtchn_to_irq(evtchn); in evtchn_make_refcounted() local
1510 if (irq == -1) in evtchn_make_refcounted()
1513 info = info_for_irq(irq); in evtchn_make_refcounted()
1528 int irq; in evtchn_get() local
1537 irq = get_evtchn_to_irq(evtchn); in evtchn_get()
1538 if (irq == -1) in evtchn_get()
1541 info = info_for_irq(irq); in evtchn_get()
1561 int irq = get_evtchn_to_irq(evtchn); in evtchn_put() local
1562 if (WARN_ON(irq == -1)) in evtchn_put()
1564 unbind_from_irq(irq); in evtchn_put()
1570 int irq; in xen_send_IPI_one() local
1581 irq = per_cpu(ipi_to_irq, cpu)[vector]; in xen_send_IPI_one()
1582 BUG_ON(irq < 0); in xen_send_IPI_one()
1583 notify_remote_via_irq(irq); in xen_send_IPI_one()
1594 int irq; in handle_irq_for_port() local
1597 irq = get_evtchn_to_irq(port); in handle_irq_for_port()
1598 if (irq == -1) in handle_irq_for_port()
1623 info = info_for_irq(irq); in handle_irq_for_port()
1633 generic_handle_irq(irq); in handle_irq_for_port()
1643 * When closing an event channel the associated IRQ must not be freed in __xen_evtchn_do_upcall()
1646 * the IRQ is handled via queue_rcu_work() _after_ closing the event in __xen_evtchn_do_upcall()
1690 /* Rebind a new event channel to an existing irq. */
1691 void rebind_evtchn_irq(evtchn_port_t evtchn, int irq) in rebind_evtchn_irq() argument
1693 struct irq_info *info = info_for_irq(irq); in rebind_evtchn_irq()
1698 /* Make sure the irq is masked, since the new event channel in rebind_evtchn_irq()
1700 disable_irq(irq); in rebind_evtchn_irq()
1704 /* After resume the irq<->evtchn mappings are all cleared out */ in rebind_evtchn_irq()
1706 /* Expect irq to have been bound before, in rebind_evtchn_irq()
1710 (void)xen_irq_info_evtchn_setup(irq, evtchn); in rebind_evtchn_irq()
1716 irq_set_affinity(irq, cpumask_of(info->cpu)); in rebind_evtchn_irq()
1719 enable_irq(irq); in rebind_evtchn_irq()
1761 int ret = xen_rebind_evtchn_to_cpu(info_for_irq(data->irq), tcpu); in set_affinity_irq()
1780 struct irq_info *info = info_for_irq(data->irq); in enable_dynirq()
1789 struct irq_info *info = info_for_irq(data->irq); in disable_dynirq()
1798 struct irq_info *info = info_for_irq(data->irq); in ack_dynirq()
1825 struct irq_info *info = info_for_irq(data->irq); in lateeoi_ack_dynirq()
1848 struct irq_info *info = info_for_irq(data->irq); in lateeoi_mask_ack_dynirq()
1859 struct irq_info *info = info_for_irq(data->irq); in retrigger_dynirq()
1874 int pirq, rc, irq, gsi; in restore_pirqs() local
1884 irq = info->irq; in restore_pirqs()
1898 pr_warn("xen map irq failed gsi=%d irq=%d pirq=%d rc=%d\n", in restore_pirqs()
1899 gsi, irq, pirq, rc); in restore_pirqs()
1900 xen_free_irq(irq); in restore_pirqs()
1904 printk(KERN_DEBUG "xen: --> irq=%d, pirq=%d\n", irq, map_irq.pirq); in restore_pirqs()
1906 __startup_pirq(irq); in restore_pirqs()
1914 int virq, irq; in restore_cpu_virqs() local
1917 if ((irq = per_cpu(virq_to_irq, cpu)[virq]) == -1) in restore_cpu_virqs()
1920 BUG_ON(virq_from_irq(irq) != virq); in restore_cpu_virqs()
1931 (void)xen_irq_info_virq_setup(cpu, irq, evtchn, virq); in restore_cpu_virqs()
1940 int ipi, irq; in restore_cpu_ipis() local
1943 if ((irq = per_cpu(ipi_to_irq, cpu)[ipi]) == -1) in restore_cpu_ipis()
1946 BUG_ON(ipi_from_irq(irq) != ipi); in restore_cpu_ipis()
1956 (void)xen_irq_info_ipi_setup(cpu, irq, evtchn, ipi); in restore_cpu_ipis()
1961 /* Clear an irq's pending state, in preparation for polling on it */
1962 void xen_clear_irq_pending(int irq) in xen_clear_irq_pending() argument
1964 struct irq_info *info = info_for_irq(irq); in xen_clear_irq_pending()
1971 void xen_set_irq_pending(int irq) in xen_set_irq_pending() argument
1973 evtchn_port_t evtchn = evtchn_from_irq(irq); in xen_set_irq_pending()
1979 bool xen_test_irq_pending(int irq) in xen_test_irq_pending() argument
1981 evtchn_port_t evtchn = evtchn_from_irq(irq); in xen_test_irq_pending()
1990 /* Poll waiting for an irq to become pending with timeout. In the usual case,
1991 * the irq will be disabled so it won't deliver an interrupt. */
1992 void xen_poll_irq_timeout(int irq, u64 timeout) in xen_poll_irq_timeout() argument
1994 evtchn_port_t evtchn = evtchn_from_irq(irq); in xen_poll_irq_timeout()
2008 /* Poll waiting for an irq to become pending. In the usual case, the
2009 * irq will be disabled so it won't deliver an interrupt. */
2010 void xen_poll_irq(int irq) in xen_poll_irq() argument
2012 xen_poll_irq_timeout(irq, 0 /* no timeout */); in xen_poll_irq()
2015 /* Check whether the IRQ line is shared with other guests. */
2016 int xen_test_irq_shared(int irq) in xen_test_irq_shared() argument
2018 struct irq_info *info = info_for_irq(irq); in xen_test_irq_shared()
2024 irq_status.irq = info->u.pirq.pirq; in xen_test_irq_shared()
2040 /* No IRQ <-> event-channel mappings. */ in xen_irq_resume()