KVM: s390: SIGP START has to report BUSY while stopping a CPU
Just like the RESTART order, the START order also has to report BUSY while a STOP request is pending, to avoid that the START might be ignored due to a race condition between the STOP and the START order. Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
committed by
Cornelia Huck
parent
cc92d6dea1
commit
58bc33b2b7
@@ -5,6 +5,7 @@
|
|||||||
#define SIGP_SENSE 1
|
#define SIGP_SENSE 1
|
||||||
#define SIGP_EXTERNAL_CALL 2
|
#define SIGP_EXTERNAL_CALL 2
|
||||||
#define SIGP_EMERGENCY_SIGNAL 3
|
#define SIGP_EMERGENCY_SIGNAL 3
|
||||||
|
#define SIGP_START 4
|
||||||
#define SIGP_STOP 5
|
#define SIGP_STOP 5
|
||||||
#define SIGP_RESTART 6
|
#define SIGP_RESTART 6
|
||||||
#define SIGP_STOP_AND_STORE_STATUS 9
|
#define SIGP_STOP_AND_STORE_STATUS 9
|
||||||
|
@@ -455,6 +455,11 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu)
|
|||||||
rc = __sigp_sense_running(vcpu, cpu_addr,
|
rc = __sigp_sense_running(vcpu, cpu_addr,
|
||||||
&vcpu->run->s.regs.gprs[r1]);
|
&vcpu->run->s.regs.gprs[r1]);
|
||||||
break;
|
break;
|
||||||
|
case SIGP_START:
|
||||||
|
rc = sigp_check_callable(vcpu, cpu_addr);
|
||||||
|
if (rc == SIGP_CC_ORDER_CODE_ACCEPTED)
|
||||||
|
rc = -EOPNOTSUPP; /* Handle START in user space */
|
||||||
|
break;
|
||||||
case SIGP_RESTART:
|
case SIGP_RESTART:
|
||||||
vcpu->stat.instruction_sigp_restart++;
|
vcpu->stat.instruction_sigp_restart++;
|
||||||
rc = sigp_check_callable(vcpu, cpu_addr);
|
rc = sigp_check_callable(vcpu, cpu_addr);
|
||||||
|
Reference in New Issue
Block a user