s390x/kvm: SIGP START is only applicable when STOPPED
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>
Tue, 24 Feb 2015 13:15:28 +0000 (14:15 +0100)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 10 Mar 2015 08:26:22 +0000 (09:26 +0100)
In preparation for other CPU states, SIGP START will only start a VCPU if it is
in the STOPPED state.

Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Message-Id: <1424783731-43426-8-git-send-email-jfrei@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
target-s390x/kvm.c

index 127a3b8024c31d4515af2e02b73773b8dbb8a13e..702351331f70154118fb8520a849c45fc355eea5 100644 (file)
@@ -1130,6 +1130,11 @@ static void sigp_start(void *arg)
 {
     SigpInfo *si = arg;
 
+    if (s390_cpu_get_state(si->cpu) != CPU_STATE_STOPPED) {
+        si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
+        return;
+    }
+
     s390_cpu_set_state(CPU_STATE_OPERATING, si->cpu);
     si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
 }