Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0a6bfdc authored by Christian Borntraeger's avatar Christian Borntraeger
Browse files

KVM: s390: Handle sthyi also for instruction intercept



Right now we handle the STHYI only via the operation exception intercept
(illegal instruction). If hardware ever decides to provide an
instruction intercept for STHYI, we should handle that as well.

Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
parent 4d5f2c04
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -368,8 +368,7 @@ static int handle_operexc(struct kvm_vcpu *vcpu)
	trace_kvm_s390_handle_operexc(vcpu, vcpu->arch.sie_block->ipa,
				      vcpu->arch.sie_block->ipb);

	if (vcpu->arch.sie_block->ipa == 0xb256 &&
	    test_kvm_facility(vcpu->kvm, 74))
	if (vcpu->arch.sie_block->ipa == 0xb256)
		return handle_sthyi(vcpu);

	if (vcpu->arch.sie_block->ipa == 0 && vcpu->kvm->arch.user_instr0)
+1 −0
Original line number Diff line number Diff line
@@ -760,6 +760,7 @@ static const intercept_handler_t b2_handlers[256] = {
	[0x3b] = handle_io_inst,
	[0x3c] = handle_io_inst,
	[0x50] = handle_ipte_interlock,
	[0x56] = handle_sthyi,
	[0x5f] = handle_io_inst,
	[0x74] = handle_io_inst,
	[0x76] = handle_io_inst,
+3 −0
Original line number Diff line number Diff line
@@ -404,6 +404,9 @@ int handle_sthyi(struct kvm_vcpu *vcpu)
	u64 code, addr, cc = 0;
	struct sthyi_sctns *sctns = NULL;

	if (!test_kvm_facility(vcpu->kvm, 74))
		return kvm_s390_inject_program_int(vcpu, PGM_OPERATION);

	/*
	 * STHYI requires extensive locking in the higher hypervisors
	 * and is very computational/memory expensive. Therefore we