diff options
Diffstat (limited to 'arch/s390/kvm/diag.c')
| -rw-r--r-- | arch/s390/kvm/diag.c | 13 | 
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/s390/kvm/diag.c b/arch/s390/kvm/diag.c index fc7ec95848c3..5fbfb88f8477 100644 --- a/arch/s390/kvm/diag.c +++ b/arch/s390/kvm/diag.c @@ -27,13 +27,13 @@ static int diag_release_pages(struct kvm_vcpu *vcpu)  	start = vcpu->run->s.regs.gprs[(vcpu->arch.sie_block->ipa & 0xf0) >> 4];  	end = vcpu->run->s.regs.gprs[vcpu->arch.sie_block->ipa & 0xf] + 4096; +	vcpu->stat.diagnose_10++;  	if (start & ~PAGE_MASK || end & ~PAGE_MASK || start >= end  	    || start < 2 * PAGE_SIZE)  		return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);  	VCPU_EVENT(vcpu, 5, "diag release pages %lX %lX", start, end); -	vcpu->stat.diagnose_10++;  	/*  	 * We checked for start >= end above, so lets check for the @@ -75,6 +75,9 @@ static int __diag_page_ref_service(struct kvm_vcpu *vcpu)  	u16 rx = (vcpu->arch.sie_block->ipa & 0xf0) >> 4;  	u16 ry = (vcpu->arch.sie_block->ipa & 0x0f); +	VCPU_EVENT(vcpu, 3, "diag page reference parameter block at 0x%llx", +		   vcpu->run->s.regs.gprs[rx]); +	vcpu->stat.diagnose_258++;  	if (vcpu->run->s.regs.gprs[rx] & 7)  		return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);  	rc = read_guest(vcpu, vcpu->run->s.regs.gprs[rx], rx, &parm, sizeof(parm)); @@ -85,6 +88,9 @@ static int __diag_page_ref_service(struct kvm_vcpu *vcpu)  	switch (parm.subcode) {  	case 0: /* TOKEN */ +		VCPU_EVENT(vcpu, 3, "pageref token addr 0x%llx " +			   "select mask 0x%llx compare mask 0x%llx", +			   parm.token_addr, parm.select_mask, parm.compare_mask);  		if (vcpu->arch.pfault_token != KVM_S390_PFAULT_TOKEN_INVALID) {  			/*  			 * If the pagefault handshake is already activated, @@ -114,6 +120,7 @@ static int __diag_page_ref_service(struct kvm_vcpu *vcpu)  		 * the cancel, therefore to reduce code complexity, we assume  		 * all outstanding tokens are already pending.  		 */ +		VCPU_EVENT(vcpu, 3, "pageref cancel addr 0x%llx", parm.token_addr);  		if (parm.token_addr || parm.select_mask ||  		    parm.compare_mask || parm.zarch)  			return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION); @@ -174,7 +181,8 @@ static int __diag_ipl_functions(struct kvm_vcpu *vcpu)  	unsigned int reg = vcpu->arch.sie_block->ipa & 0xf;  	unsigned long subcode = vcpu->run->s.regs.gprs[reg] & 0xffff; -	VCPU_EVENT(vcpu, 5, "diag ipl functions, subcode %lx", subcode); +	VCPU_EVENT(vcpu, 3, "diag ipl functions, subcode %lx", subcode); +	vcpu->stat.diagnose_308++;  	switch (subcode) {  	case 3:  		vcpu->run->s390_reset_flags = KVM_S390_RESET_CLEAR; @@ -202,6 +210,7 @@ static int __diag_virtio_hypercall(struct kvm_vcpu *vcpu)  {  	int ret; +	vcpu->stat.diagnose_500++;  	/* No virtio-ccw notification? Get out quickly. */  	if (!vcpu->kvm->arch.css_support ||  	    (vcpu->run->s.regs.gprs[1] != KVM_S390_VIRTIO_CCW_NOTIFY))  |