|
@@ -232,8 +232,6 @@ static int try_handle_skey(struct kvm_vcpu *vcpu)
|
|
|
VCPU_EVENT(vcpu, 4, "%s", "retrying storage key operation");
|
|
|
return -EAGAIN;
|
|
|
}
|
|
|
- if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
|
|
|
- return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -244,6 +242,9 @@ static int handle_iske(struct kvm_vcpu *vcpu)
|
|
|
int reg1, reg2;
|
|
|
int rc;
|
|
|
|
|
|
+ if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
|
|
|
+ return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
|
|
|
+
|
|
|
rc = try_handle_skey(vcpu);
|
|
|
if (rc)
|
|
|
return rc != -EAGAIN ? rc : 0;
|
|
@@ -273,6 +274,9 @@ static int handle_rrbe(struct kvm_vcpu *vcpu)
|
|
|
int reg1, reg2;
|
|
|
int rc;
|
|
|
|
|
|
+ if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
|
|
|
+ return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
|
|
|
+
|
|
|
rc = try_handle_skey(vcpu);
|
|
|
if (rc)
|
|
|
return rc != -EAGAIN ? rc : 0;
|
|
@@ -308,6 +312,9 @@ static int handle_sske(struct kvm_vcpu *vcpu)
|
|
|
int reg1, reg2;
|
|
|
int rc;
|
|
|
|
|
|
+ if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
|
|
|
+ return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
|
|
|
+
|
|
|
rc = try_handle_skey(vcpu);
|
|
|
if (rc)
|
|
|
return rc != -EAGAIN ? rc : 0;
|