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

Commit 11ddcd41 authored by David Hildenbrand's avatar David Hildenbrand Committed by Christian Borntraeger
Browse files

KVM: s390: trace and count all skey intercepts



Let's trace and count all skey handling operations, even if lazy skey
handling was already activated. Also, don't enable lazy skey handling if
anything went wrong while enabling skey handling for the SIE.

Signed-off-by: default avatarDavid Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
parent 23861451
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -152,12 +152,14 @@ static int handle_store_cpu_address(struct kvm_vcpu *vcpu)
static int __skey_check_enable(struct kvm_vcpu *vcpu)
{
	int rc = 0;

	trace_kvm_s390_skey_related_inst(vcpu);
	if (!(vcpu->arch.sie_block->ictl & (ICTL_ISKE | ICTL_SSKE | ICTL_RRBE)))
		return rc;

	rc = s390_enable_skey();
	VCPU_EVENT(vcpu, 3, "%s", "enabling storage keys for guest");
	trace_kvm_s390_skey_related_inst(vcpu);
	VCPU_EVENT(vcpu, 3, "enabling storage keys for guest: %d", rc);
	if (!rc)
		vcpu->arch.sie_block->ictl &= ~(ICTL_ISKE | ICTL_SSKE | ICTL_RRBE);
	return rc;
}
@@ -165,11 +167,12 @@ static int __skey_check_enable(struct kvm_vcpu *vcpu)

static int handle_skey(struct kvm_vcpu *vcpu)
{
	int rc = __skey_check_enable(vcpu);
	int rc;

	vcpu->stat.instruction_storage_key++;
	rc = __skey_check_enable(vcpu);
	if (rc)
		return rc;
	vcpu->stat.instruction_storage_key++;

	if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
		return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ TRACE_EVENT(kvm_s390_skey_related_inst,
	    TP_fast_assign(
		    VCPU_ASSIGN_COMMON
		    ),
	    VCPU_TP_PRINTK("%s", "first instruction related to skeys on vcpu")
	    VCPU_TP_PRINTK("%s", "storage key related instruction")
	);

TRACE_EVENT(kvm_s390_major_guest_pfault,