These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / arch / s390 / kvm / diag.c
index fc7ec95..5fbfb88 100644 (file)
@@ -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))