aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm/intercept.c
diff options
context:
space:
mode:
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>2016-06-21 14:19:51 +0200
committerChristian Borntraeger <borntraeger@de.ibm.com>2016-07-18 14:15:00 +0200
commit6502a34cfd6695929086187f63fe670cc3050e68 (patch)
tree774e386aac358c15baeeba02a38bb8b080e3887d /arch/s390/kvm/intercept.c
parentKVM: x86: bump KVM_MAX_VCPU_ID to 1023 (diff)
downloadlinux-dev-6502a34cfd6695929086187f63fe670cc3050e68.tar.xz
linux-dev-6502a34cfd6695929086187f63fe670cc3050e68.zip
KVM: s390: allow user space to handle instr 0x0000
We will use illegal instruction 0x0000 for handling 2 byte sw breakpoints from user space. As it can be enabled dynamically via a capability, let's move setting of ICTL_OPEREXC to the post creation step, so we avoid any races when enabling that capability just while adding new cpus. Acked-by: Janosch Frank <frankja@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch/s390/kvm/intercept.c')
-rw-r--r--arch/s390/kvm/intercept.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c
index 850be47c4cc9..7a2f1551bc39 100644
--- a/arch/s390/kvm/intercept.c
+++ b/arch/s390/kvm/intercept.c
@@ -359,6 +359,9 @@ static int handle_operexc(struct kvm_vcpu *vcpu)
test_kvm_facility(vcpu->kvm, 74))
return handle_sthyi(vcpu);
+ if (vcpu->arch.sie_block->ipa == 0 && vcpu->kvm->arch.user_instr0)
+ return -EOPNOTSUPP;
+
return kvm_s390_inject_program_int(vcpu, PGM_OPERATION);
}