Re: [PATCH 2/2] KVM: x86: Identify vCPU0 by its vcpu_idx instead of walking vCPUs array

From: Paolo Bonzini
Date: Wed Sep 22 2021 - 03:41:20 EST


On 20/09/21 16:57, Sean Christopherson wrote:
On Mon, Sep 13, 2021, Vitaly Kuznetsov wrote:
Sean Christopherson <seanjc@xxxxxxxxxx> writes:

Use vcpu_idx to identify vCPU0 when updating HyperV's TSC page, which is
shared by all vCPUs and "owned" by vCPU0 (because vCPU0 is the only vCPU
that's guaranteed to exist). Using kvm_get_vcpu() to find vCPU works,
but it's a rather odd and suboptimal method to check the index of a given
vCPU.

No functional change intended.

Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
---
arch/x86/kvm/x86.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 86539c1686fa..6ab851df08d1 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2969,7 +2969,7 @@ static int kvm_guest_time_update(struct kvm_vcpu *v)
offsetof(struct compat_vcpu_info, time));
if (vcpu->xen.vcpu_time_info_set)
kvm_setup_pvclock_page(v, &vcpu->xen.vcpu_time_info_cache, 0);
- if (v == kvm_get_vcpu(v->kvm, 0))
+ if (!v->vcpu_idx)
kvm_hv_setup_tsc_page(v->kvm, &vcpu->hv_clock);
return 0;
}

" ... instead of walking vCPUs array" in the Subject line is a bit
confusing because kvm_get_vcpu() doesn't actually walk anything, it just
returns 'kvm->vcpus[i]' after checking that we actually have that many
vCPUs. The patch itself is OK, so

Argh, yes, I have a feeling I wrote the changelog after digging into the history
of kvm_get_vcpu().

Paolo, can you tweak the shortlog to:

KVM: x86: Identify vCPU0 by its vcpu_idx instead of its vCPUs array entry


Done and queued. Patch 1 required some further s390 changes.

Paolo