KVM: stats: Add halt polling related histogram stats
[linux-2.6-microblaze.git] / virt / kvm / kvm_main.c
index e6fc579..3e67c93 100644 (file)
@@ -3222,13 +3222,23 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
                                ++vcpu->stat.generic.halt_successful_poll;
                                if (!vcpu_valid_wakeup(vcpu))
                                        ++vcpu->stat.generic.halt_poll_invalid;
+
+                               KVM_STATS_LOG_HIST_UPDATE(
+                                     vcpu->stat.generic.halt_poll_success_hist,
+                                     ktime_to_ns(ktime_get()) -
+                                     ktime_to_ns(start));
                                goto out;
                        }
                        cpu_relax();
                        poll_end = cur = ktime_get();
                } while (kvm_vcpu_can_poll(cur, stop));
+
+               KVM_STATS_LOG_HIST_UPDATE(
+                               vcpu->stat.generic.halt_poll_fail_hist,
+                               ktime_to_ns(ktime_get()) - ktime_to_ns(start));
        }
 
+
        prepare_to_rcuwait(&vcpu->wait);
        for (;;) {
                set_current_state(TASK_INTERRUPTIBLE);
@@ -3244,6 +3254,8 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
        if (waited) {
                vcpu->stat.generic.halt_wait_ns +=
                        ktime_to_ns(cur) - ktime_to_ns(poll_end);
+               KVM_STATS_LOG_HIST_UPDATE(vcpu->stat.generic.halt_wait_hist,
+                               ktime_to_ns(cur) - ktime_to_ns(poll_end));
        }
 out:
        kvm_arch_vcpu_unblocking(vcpu);