aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/xen
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 19:29:25 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 19:29:25 -0400
commit7a6362800cb7d1d618a697a650c7aaed3eb39320 (patch)
tree087f9bc6c13ef1fad4b392c5cf9325cd28fa8523 /drivers/xen
parent6445ced8670f37cfc2c5e24a9de9b413dbfc788d (diff)
parentceda86a108671294052cbf51660097b6534672f5 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1480 commits) bonding: enable netpoll without checking link status xfrm: Refcount destination entry on xfrm_lookup net: introduce rx_handler results and logic around that bonding: get rid of IFF_SLAVE_INACTIVE netdev->priv_flag bonding: wrap slave state work net: get rid of multiple bond-related netdevice->priv_flags bonding: register slave pointer for rx_handler be2net: Bump up the version number be2net: Copyright notice change. Update to Emulex instead of ServerEngines e1000e: fix kconfig for crc32 dependency netfilter ebtables: fix xt_AUDIT to work with ebtables xen network backend driver bonding: Improve syslog message at device creation time bonding: Call netif_carrier_off after register_netdevice bonding: Incorrect TX queue offset net_sched: fix ip_tos2prio xfrm: fix __xfrm_route_forward() be2net: Fix UDP packet detected status in RX compl Phonet: fix aligned-mode pipe socket buffer header reserve netxen: support for GbE port settings ... Fix up conflicts in drivers/staging/brcm80211/brcmsmac/wl_mac80211.c with the staging updates.
Diffstat (limited to 'drivers/xen')
-rw-r--r--drivers/xen/events.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 0ad1699a1b3..65f5068afd8 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -794,6 +794,21 @@ static int bind_ipi_to_irq(unsigned int ipi, unsigned int cpu)
794 return irq; 794 return irq;
795} 795}
796 796
797static int bind_interdomain_evtchn_to_irq(unsigned int remote_domain,
798 unsigned int remote_port)
799{
800 struct evtchn_bind_interdomain bind_interdomain;
801 int err;
802
803 bind_interdomain.remote_dom = remote_domain;
804 bind_interdomain.remote_port = remote_port;
805
806 err = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain,
807 &bind_interdomain);
808
809 return err ? : bind_evtchn_to_irq(bind_interdomain.local_port);
810}
811
797 812
798int bind_virq_to_irq(unsigned int virq, unsigned int cpu) 813int bind_virq_to_irq(unsigned int virq, unsigned int cpu)
799{ 814{
@@ -889,6 +904,29 @@ int bind_evtchn_to_irqhandler(unsigned int evtchn,
889} 904}
890EXPORT_SYMBOL_GPL(bind_evtchn_to_irqhandler); 905EXPORT_SYMBOL_GPL(bind_evtchn_to_irqhandler);
891 906
907int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain,
908 unsigned int remote_port,
909 irq_handler_t handler,
910 unsigned long irqflags,
911 const char *devname,
912 void *dev_id)
913{
914 int irq, retval;
915
916 irq = bind_interdomain_evtchn_to_irq(remote_domain, remote_port);
917 if (irq < 0)
918 return irq;
919
920 retval = request_irq(irq, handler, irqflags, devname, dev_id);
921 if (retval != 0) {
922 unbind_from_irq(irq);
923 return retval;
924 }
925
926 return irq;
927}
928EXPORT_SYMBOL_GPL(bind_interdomain_evtchn_to_irqhandler);
929
892int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, 930int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu,
893 irq_handler_t handler, 931 irq_handler_t handler,
894 unsigned long irqflags, const char *devname, void *dev_id) 932 unsigned long irqflags, const char *devname, void *dev_id)