diff options
author | Juergen Gross <jgross@suse.com> | 2014-08-28 00:44:09 -0400 |
---|---|---|
committer | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2014-09-23 09:36:19 -0400 |
commit | 854072dd0f73b8e4238c88bdf0dd2a8db0239c1c (patch) | |
tree | 8921c6aef3aee4b9b024f527b711b4003b5621ca | |
parent | 46e3626adb86be2ff1321d26107cb75df07a7f4e (diff) |
xen/events: support threaded irqs for interdomain event channels
Export bind_interdomain_evtchn_to_irq() so drivers can use threaded
interrupt handlers with:
irq = bind_interdomain_evtchn_to_irq(remote_dom, remote_port);
if (irq < 0)
/* error */
ret = request_threaded_irq(...);
Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
-rw-r--r-- | drivers/xen/events/events_base.c | 5 | ||||
-rw-r--r-- | include/xen/events.h | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c index 5b5c5ff273fd..b4bca2d4a7e5 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c | |||
@@ -900,8 +900,8 @@ static int bind_ipi_to_irq(unsigned int ipi, unsigned int cpu) | |||
900 | return irq; | 900 | return irq; |
901 | } | 901 | } |
902 | 902 | ||
903 | static int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, | 903 | int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, |
904 | unsigned int remote_port) | 904 | unsigned int remote_port) |
905 | { | 905 | { |
906 | struct evtchn_bind_interdomain bind_interdomain; | 906 | struct evtchn_bind_interdomain bind_interdomain; |
907 | int err; | 907 | int err; |
@@ -914,6 +914,7 @@ static int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, | |||
914 | 914 | ||
915 | return err ? : bind_evtchn_to_irq(bind_interdomain.local_port); | 915 | return err ? : bind_evtchn_to_irq(bind_interdomain.local_port); |
916 | } | 916 | } |
917 | EXPORT_SYMBOL_GPL(bind_interdomain_evtchn_to_irq); | ||
917 | 918 | ||
918 | static int find_virq(unsigned int virq, unsigned int cpu) | 919 | static int find_virq(unsigned int virq, unsigned int cpu) |
919 | { | 920 | { |
diff --git a/include/xen/events.h b/include/xen/events.h index 8bee7a75e850..5321cd9636e6 100644 --- a/include/xen/events.h +++ b/include/xen/events.h | |||
@@ -28,6 +28,8 @@ int bind_ipi_to_irqhandler(enum ipi_vector ipi, | |||
28 | unsigned long irqflags, | 28 | unsigned long irqflags, |
29 | const char *devname, | 29 | const char *devname, |
30 | void *dev_id); | 30 | void *dev_id); |
31 | int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, | ||
32 | unsigned int remote_port); | ||
31 | int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, | 33 | int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, |
32 | unsigned int remote_port, | 34 | unsigned int remote_port, |
33 | irq_handler_t handler, | 35 | irq_handler_t handler, |