]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/xen.git/commitdiff
evtchn: eliminate 64k ports limitation
authorJan Beulich <jbeulich@suse.com>
Fri, 11 Apr 2014 09:25:56 +0000 (11:25 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 11 Apr 2014 09:25:56 +0000 (11:25 +0200)
The introduction of FIFO event channels claimed to support over 100k
ports, but failed to widen a number of 16-bit variables/operations.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Keir Fraser <keir@xen.org>
xen/common/event_channel.c
xen/include/xen/sched.h

index cbd495da298479b231db0b359dd975cf1f7c210a..685384221cb1a3c41a48d0a3e16e8f1b6593c526 100644 (file)
@@ -275,12 +275,12 @@ static long evtchn_bind_interdomain(evtchn_bind_interdomain_t *bind)
         goto out;
 
     lchn->u.interdomain.remote_dom  = rd;
-    lchn->u.interdomain.remote_port = (u16)rport;
+    lchn->u.interdomain.remote_port = rport;
     lchn->state                     = ECS_INTERDOMAIN;
     evtchn_port_init(ld, lchn);
     
     rchn->u.interdomain.remote_dom  = ld;
-    rchn->u.interdomain.remote_port = (u16)lport;
+    rchn->u.interdomain.remote_port = lport;
     rchn->state                     = ECS_INTERDOMAIN;
 
     /*
index cbbe8a4d68a06dafff4c373b7706eb7c2a3e943a..b080c9eefb3eccd8ba588b272998ff6440a3dc37 100644 (file)
@@ -90,13 +90,13 @@ struct evtchn
             domid_t remote_domid;
         } unbound;     /* state == ECS_UNBOUND */
         struct {
-            u16            remote_port;
+            evtchn_port_t  remote_port;
             struct domain *remote_dom;
         } interdomain; /* state == ECS_INTERDOMAIN */
         struct {
-            u16            irq;
-            u16            next_port;
-            u16            prev_port;
+            u32            irq;
+            evtchn_port_t  next_port;
+            evtchn_port_t  prev_port;
         } pirq;        /* state == ECS_PIRQ */
         u16 virq;      /* state == ECS_VIRQ */
     } u;
@@ -209,7 +209,7 @@ struct vcpu
     atomic_t         pause_count;
 
     /* IRQ-safe virq_lock protects against delivering VIRQ to stale evtchn. */
-    u16              virq_to_evtchn[NR_VIRQS];
+    evtchn_port_t    virq_to_evtchn[NR_VIRQS];
     spinlock_t       virq_lock;
 
     /* Bitmask of CPUs on which this VCPU may run. */