OSDN Git Service

KVM: Don't redo ktime_get() when calculating halt-polling stop/deadline
authorSean Christopherson <seanjc@google.com>
Sat, 9 Oct 2021 02:12:09 +0000 (19:12 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 8 Dec 2021 09:24:52 +0000 (04:24 -0500)
Calculate the halt-polling "stop" time using "start" instead of redoing
ktime_get().  In practice, the numbers involved are in the noise (e.g.,
in the happy case where hardware correctly predicts do_halt_poll and
there are no interrupts, "start" is probably only a few cycles old)
and either approach is perfectly ok.  But it's more precise to count
any extra latency toward the halt-polling time.

Reviewed-by: David Matlack <dmatlack@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20211009021236.4122790-17-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/kvm_main.c

index 2630db6..97bde32 100644 (file)
@@ -3343,7 +3343,7 @@ void kvm_vcpu_halt(struct kvm_vcpu *vcpu)
 
        start = cur = poll_end = ktime_get();
        if (do_halt_poll) {
-               ktime_t stop = ktime_add_ns(ktime_get(), vcpu->halt_poll_ns);
+               ktime_t stop = ktime_add_ns(start, vcpu->halt_poll_ns);
 
                do {
                        /*