All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nitesh Narayan Lal <nitesh@redhat.com>
To: Sean Christopherson <sean.j.christopherson@intel.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	pbonzini@redhat.com, mtosatti@redhat.com, rkrcmar@redhat.com,
	vkuznets@redhat.com, wanpengli@tencent.com, jmattson@google.com,
	joro@8bytes.org
Subject: Re: [Patch v1 1/2] KVM: remember position in kvm->vcpus array
Date: Wed, 6 Nov 2019 10:57:05 -0500	[thread overview]
Message-ID: <58c040b7-ac4a-1d8e-3cd6-7d3aeb6ba4f1@redhat.com> (raw)
In-Reply-To: <20191106144326.GA16249@linux.intel.com>


[-- Attachment #1.1: Type: text/plain, Size: 2575 bytes --]


On 11/6/19 9:43 AM, Sean Christopherson wrote:
> On Wed, Nov 06, 2019 at 08:36:37AM -0500, Nitesh Narayan Lal wrote:
>> From: Radim Krčmář <rkrcmar@redhat.com>
>>
>> Fetching an index for any vcpu in kvm->vcpus array by traversing
>> the entire array everytime is costly.
>> This patch remembers the position of each vcpu in kvm->vcpus array
>> by storing it in vcpus_idx under kvm_vcpu structure.
>>
>> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
>> Signed-off-by: Nitesh Narayan Lal <nitesh@redhat.com>
>> ---
>>  include/linux/kvm_host.h | 11 +++--------
>>  virt/kvm/kvm_main.c      |  5 ++++-
>>  2 files changed, 7 insertions(+), 9 deletions(-)
>>
>> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
>> index 719fc3e..31c4fde 100644
>> --- a/include/linux/kvm_host.h
>> +++ b/include/linux/kvm_host.h
>> @@ -266,7 +266,8 @@ struct kvm_vcpu {
>>  	struct preempt_notifier preempt_notifier;
>>  #endif
>>  	int cpu;
>> -	int vcpu_id;
>> +	int vcpu_id; /* id given by userspace at creation */
>> +	int vcpus_idx; /* index in kvm->vcpus array */
> I'd probably prefer vcpu_idx or vcpu_index, but it's not a strong
> preference by any means.

Sure, I will probably replace it with vcpu_idx.

>
>>  	int srcu_idx;
>>  	int mode;
>>  	u64 requests;
>> @@ -571,13 +572,7 @@ static inline struct kvm_vcpu *kvm_get_vcpu_by_id(struct kvm *kvm, int id)
>>  
>>  static inline int kvm_vcpu_get_idx(struct kvm_vcpu *vcpu)
>>  {
>> -	struct kvm_vcpu *tmp;
>> -	int idx;
>> -
>> -	kvm_for_each_vcpu(idx, tmp, vcpu->kvm)
>> -		if (tmp == vcpu)
>> -			return idx;
>> -	BUG();
>> +	return vcpu->vcpus_idx;
>>  }
>>  
>>  #define kvm_for_each_memslot(memslot, slots)	\
>> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
>> index 67ef3f2..24ab711 100644
>> --- a/virt/kvm/kvm_main.c
>> +++ b/virt/kvm/kvm_main.c
>> @@ -2673,7 +2673,10 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
>>  		goto unlock_vcpu_destroy;
>>  	}
>>  
>> -	BUG_ON(kvm->vcpus[atomic_read(&kvm->online_vcpus)]);
>> +	vcpu->vcpus_idx = atomic_read(&kvm->online_vcpus);
>> +
> Nit: I'd omit this newline since the assignment and BUG_ON() are directly
> related.

Makes sense to me.

>
>> +	BUG_ON(kvm->vcpus[vcpu->vcpus_idx]);
> The assignment to kvm->vcpus a few lines below should be updated to use
> the new index.

Ah yes.
Thanks for pointing this out.

>
>> +
>>  
>>  	/* Now it's all set up, let userspace reach it */
>>  	kvm_get_kvm(kvm);
>> -- 
>> 1.8.3.1
>>
-- 
Nitesh


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2019-11-06 15:57 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-06 13:36 [PATCH v1 0/2] KVM: deliver IOAPIC scan request only to the target vCPUs Nitesh Narayan Lal
2019-11-06 13:36 ` [Patch v1 1/2] KVM: remember position in kvm->vcpus array Nitesh Narayan Lal
2019-11-06 14:43   ` Sean Christopherson
2019-11-06 15:57     ` Nitesh Narayan Lal [this message]
2019-11-06 13:36 ` [Patch v1 2/2] KVM: x86: deliver KVM IOAPIC scan request to target vCPUs Nitesh Narayan Lal
2019-11-06 15:14   ` Sean Christopherson
2019-11-06 16:20     ` Nitesh Narayan Lal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=58c040b7-ac4a-1d8e-3cd6-7d3aeb6ba4f1@redhat.com \
    --to=nitesh@redhat.com \
    --cc=jmattson@google.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=sean.j.christopherson@intel.com \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.