From: Stuart Yoder <stuart.yo...@freescale.com>

Convert to microseconds when displaying
(with fix from Bharat Bhushan <bharat.bhus...@freescale.com>).

This reduces rounding error with large quantities of short exits.

Signed-off-by: Stuart Yoder <stuart.yo...@freescale.com>
Signed-off-by: Scott Wood <scottw...@freescale.com>
---
 arch/powerpc/kvm/timing.c |   30 +++++++++++++++++-------------
 1 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/arch/powerpc/kvm/timing.c b/arch/powerpc/kvm/timing.c
index a021f58..5f79d91 100644
--- a/arch/powerpc/kvm/timing.c
+++ b/arch/powerpc/kvm/timing.c
@@ -56,15 +56,6 @@ static void add_exit_timing(struct kvm_vcpu *vcpu, u64 
duration, int type)
 {
        u64 old;
 
-       do_div(duration, tb_ticks_per_usec);
-       if (unlikely(duration > 0xFFFFFFFF)) {
-               printk(KERN_ERR"%s - duration too big -> overflow"
-                       " duration %lld type %d exit #%d\n",
-                       __func__, duration, type,
-                       vcpu->arch.timing_count_type[type]);
-               return;
-       }
-
        vcpu->arch.timing_count_type[type]++;
 
        /* sum */
@@ -147,17 +138,30 @@ static int kvmppc_exit_timing_show(struct seq_file *m, 
void *private)
 {
        struct kvm_vcpu *vcpu = m->private;
        int i;
+       u64 min, max, sum, sum_quad;
 
        seq_printf(m, "%s", "type       count   min     max     sum     
sum_squared\n");
 
+
        for (i = 0; i < __NUMBER_OF_KVM_EXIT_TYPES; i++) {
+
+               min = vcpu->arch.timing_min_duration[i];
+               do_div(min, tb_ticks_per_usec);
+               max = vcpu->arch.timing_max_duration[i];
+               do_div(max, tb_ticks_per_usec);
+               sum = vcpu->arch.timing_sum_duration[i];
+               do_div(sum, tb_ticks_per_usec);
+               sum_quad = vcpu->arch.timing_sum_quad_duration[i];
+               do_div(sum_quad, tb_ticks_per_usec);
+
                seq_printf(m, "%12s     %10d    %10lld  %10lld  %20lld  
%20lld\n",
                        kvm_exit_names[i],
                        vcpu->arch.timing_count_type[i],
-                       vcpu->arch.timing_min_duration[i],
-                       vcpu->arch.timing_max_duration[i],
-                       vcpu->arch.timing_sum_duration[i],
-                       vcpu->arch.timing_sum_quad_duration[i]);
+                       min,
+                       max,
+                       sum,
+                       sum_quad);
+
        }
        return 0;
 }
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to