diff options
Diffstat (limited to 'include/xen/events.h')
-rw-r--r-- | include/xen/events.h | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/include/xen/events.h b/include/xen/events.h index a15d93262e30..9af21e19545a 100644 --- a/include/xen/events.h +++ b/include/xen/events.h | |||
@@ -12,6 +12,7 @@ int bind_evtchn_to_irqhandler(unsigned int evtchn, | |||
12 | irq_handler_t handler, | 12 | irq_handler_t handler, |
13 | unsigned long irqflags, const char *devname, | 13 | unsigned long irqflags, const char *devname, |
14 | void *dev_id); | 14 | void *dev_id); |
15 | int bind_virq_to_irq(unsigned int virq, unsigned int cpu); | ||
15 | int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, | 16 | int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, |
16 | irq_handler_t handler, | 17 | irq_handler_t handler, |
17 | unsigned long irqflags, const char *devname, | 18 | unsigned long irqflags, const char *devname, |
@@ -22,6 +23,12 @@ int bind_ipi_to_irqhandler(enum ipi_vector ipi, | |||
22 | unsigned long irqflags, | 23 | unsigned long irqflags, |
23 | const char *devname, | 24 | const char *devname, |
24 | void *dev_id); | 25 | void *dev_id); |
26 | int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, | ||
27 | unsigned int remote_port, | ||
28 | irq_handler_t handler, | ||
29 | unsigned long irqflags, | ||
30 | const char *devname, | ||
31 | void *dev_id); | ||
25 | 32 | ||
26 | /* | 33 | /* |
27 | * Common unbind function for all event sources. Takes IRQ to unbind from. | 34 | * Common unbind function for all event sources. Takes IRQ to unbind from. |
@@ -40,9 +47,9 @@ static inline void notify_remote_via_evtchn(int port) | |||
40 | (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send); | 47 | (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send); |
41 | } | 48 | } |
42 | 49 | ||
43 | extern void notify_remote_via_irq(int irq); | 50 | void notify_remote_via_irq(int irq); |
44 | 51 | ||
45 | extern void xen_irq_resume(void); | 52 | void xen_irq_resume(void); |
46 | 53 | ||
47 | /* Clear an irq's pending state, in preparation for polling on it */ | 54 | /* Clear an irq's pending state, in preparation for polling on it */ |
48 | void xen_clear_irq_pending(int irq); | 55 | void xen_clear_irq_pending(int irq); |
@@ -53,14 +60,45 @@ bool xen_test_irq_pending(int irq); | |||
53 | irq will be disabled so it won't deliver an interrupt. */ | 60 | irq will be disabled so it won't deliver an interrupt. */ |
54 | void xen_poll_irq(int irq); | 61 | void xen_poll_irq(int irq); |
55 | 62 | ||
63 | /* Poll waiting for an irq to become pending with a timeout. In the usual case, | ||
64 | * the irq will be disabled so it won't deliver an interrupt. */ | ||
65 | void xen_poll_irq_timeout(int irq, u64 timeout); | ||
66 | |||
56 | /* Determine the IRQ which is bound to an event channel */ | 67 | /* Determine the IRQ which is bound to an event channel */ |
57 | unsigned irq_from_evtchn(unsigned int evtchn); | 68 | unsigned irq_from_evtchn(unsigned int evtchn); |
58 | 69 | ||
59 | /* Xen HVM evtchn vector callback */ | 70 | /* Xen HVM evtchn vector callback */ |
60 | extern void xen_hvm_callback_vector(void); | 71 | void xen_hvm_callback_vector(void); |
61 | extern int xen_have_vector_callback; | 72 | extern int xen_have_vector_callback; |
62 | int xen_set_callback_via(uint64_t via); | 73 | int xen_set_callback_via(uint64_t via); |
63 | void xen_evtchn_do_upcall(struct pt_regs *regs); | 74 | void xen_evtchn_do_upcall(struct pt_regs *regs); |
64 | void xen_hvm_evtchn_do_upcall(void); | 75 | void xen_hvm_evtchn_do_upcall(void); |
65 | 76 | ||
77 | /* Allocate a pirq for a physical interrupt, given a gsi. */ | ||
78 | int xen_allocate_pirq_gsi(unsigned gsi); | ||
79 | /* Bind a pirq for a physical interrupt to an irq. */ | ||
80 | int xen_bind_pirq_gsi_to_irq(unsigned gsi, | ||
81 | unsigned pirq, int shareable, char *name); | ||
82 | |||
83 | #ifdef CONFIG_PCI_MSI | ||
84 | /* Allocate a pirq for a MSI style physical interrupt. */ | ||
85 | int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc); | ||
86 | /* Bind an PSI pirq to an irq. */ | ||
87 | int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, | ||
88 | int pirq, int vector, const char *name, | ||
89 | domid_t domid); | ||
90 | #endif | ||
91 | |||
92 | /* De-allocates the above mentioned physical interrupt. */ | ||
93 | int xen_destroy_irq(int irq); | ||
94 | |||
95 | /* Return irq from pirq */ | ||
96 | int xen_irq_from_pirq(unsigned pirq); | ||
97 | |||
98 | /* Return the pirq allocated to the irq. */ | ||
99 | int xen_pirq_from_irq(unsigned irq); | ||
100 | |||
101 | /* Determine whether to ignore this IRQ if it is passed to a guest. */ | ||
102 | int xen_test_irq_shared(int irq); | ||
103 | |||
66 | #endif /* _XEN_EVENTS_H */ | 104 | #endif /* _XEN_EVENTS_H */ |