aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/s390/kvm/intercept.c3
-rw-r--r--arch/s390/kvm/priv.c1
-rw-r--r--arch/s390/kvm/sthyi.c3
3 files changed, 5 insertions, 2 deletions
diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c
index 59920f96ebc0..0a1764655153 100644
--- a/arch/s390/kvm/intercept.c
+++ b/arch/s390/kvm/intercept.c
@@ -368,8 +368,7 @@ static int handle_operexc(struct kvm_vcpu *vcpu)
368 trace_kvm_s390_handle_operexc(vcpu, vcpu->arch.sie_block->ipa, 368 trace_kvm_s390_handle_operexc(vcpu, vcpu->arch.sie_block->ipa,
369 vcpu->arch.sie_block->ipb); 369 vcpu->arch.sie_block->ipb);
370 370
371 if (vcpu->arch.sie_block->ipa == 0xb256 && 371 if (vcpu->arch.sie_block->ipa == 0xb256)
372 test_kvm_facility(vcpu->kvm, 74))
373 return handle_sthyi(vcpu); 372 return handle_sthyi(vcpu);
374 373
375 if (vcpu->arch.sie_block->ipa == 0 && vcpu->kvm->arch.user_instr0) 374 if (vcpu->arch.sie_block->ipa == 0 && vcpu->kvm->arch.user_instr0)
diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
index 93d6cde8c3ea..26f30bab9c2f 100644
--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -760,6 +760,7 @@ static const intercept_handler_t b2_handlers[256] = {
760 [0x3b] = handle_io_inst, 760 [0x3b] = handle_io_inst,
761 [0x3c] = handle_io_inst, 761 [0x3c] = handle_io_inst,
762 [0x50] = handle_ipte_interlock, 762 [0x50] = handle_ipte_interlock,
763 [0x56] = handle_sthyi,
763 [0x5f] = handle_io_inst, 764 [0x5f] = handle_io_inst,
764 [0x74] = handle_io_inst, 765 [0x74] = handle_io_inst,
765 [0x76] = handle_io_inst, 766 [0x76] = handle_io_inst,
diff --git a/arch/s390/kvm/sthyi.c b/arch/s390/kvm/sthyi.c
index 05c98bb853cf..926b5244263e 100644
--- a/arch/s390/kvm/sthyi.c
+++ b/arch/s390/kvm/sthyi.c
@@ -404,6 +404,9 @@ int handle_sthyi(struct kvm_vcpu *vcpu)
404 u64 code, addr, cc = 0; 404 u64 code, addr, cc = 0;
405 struct sthyi_sctns *sctns = NULL; 405 struct sthyi_sctns *sctns = NULL;
406 406
407 if (!test_kvm_facility(vcpu->kvm, 74))
408 return kvm_s390_inject_program_int(vcpu, PGM_OPERATION);
409
407 /* 410 /*
408 * STHYI requires extensive locking in the higher hypervisors 411 * STHYI requires extensive locking in the higher hypervisors
409 * and is very computational/memory expensive. Therefore we 412 * and is very computational/memory expensive. Therefore we