]> xenbits.xensource.com Git - qemu-upstream-4.5-testing.git/commitdiff
xen: Fix vcpus initialisation.
authorAnthony PERARD <anthony.perard@citrix.com>
Fri, 14 Jun 2013 13:43:05 +0000 (14:43 +0100)
committerAnthony PERARD <anthony.perard@citrix.com>
Mon, 17 Jun 2013 11:33:24 +0000 (12:33 +0100)
Each vcpu needs a call to xc_evtchn_bind_interdomain in QEMU, even those
that are unplug at QEMU initialisation.

Without this patch, any hot-plugged CPU will be "Stuck ??" when Linux
will try to use them.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
xen-all.c

index daf43b99d00db4ea64d9b8588ec401d092f6f1ea..15be8edc8562c3eea70e8ddd33399b8867d72a94 100644 (file)
--- a/xen-all.c
+++ b/xen-all.c
@@ -632,13 +632,13 @@ static ioreq_t *cpu_get_ioreq(XenIOState *state)
     }
 
     if (port != -1) {
-        for (i = 0; i < smp_cpus; i++) {
+        for (i = 0; i < max_cpus; i++) {
             if (state->ioreq_local_port[i] == port) {
                 break;
             }
         }
 
-        if (i == smp_cpus) {
+        if (i == max_cpus) {
             hw_error("Fatal error while trying to get io event!\n");
         }
 
@@ -1123,10 +1123,10 @@ int xen_hvm_init(void)
         hw_error("map buffered IO page returned error %d", errno);
     }
 
-    state->ioreq_local_port = g_malloc0(smp_cpus * sizeof (evtchn_port_t));
+    state->ioreq_local_port = g_malloc0(max_cpus * sizeof (evtchn_port_t));
 
     /* FIXME: how about if we overflow the page here? */
-    for (i = 0; i < smp_cpus; i++) {
+    for (i = 0; i < max_cpus; i++) {
         rc = xc_evtchn_bind_interdomain(state->xce_handle, xen_domid,
                                         xen_vcpu_eport(state->shared_page, i));
         if (rc == -1) {