diff options
-rw-r--r-- | arch/s390/kvm/intercept.c | 3 | ||||
-rw-r--r-- | arch/s390/kvm/priv.c | 1 | ||||
-rw-r--r-- | arch/s390/kvm/sthyi.c | 3 |
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 |