Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1338067

Re: [PATCH v3 05/11] KVM: page track: introduce kvm_page_track_{add,remove}_page

From Paolo Bonzini <pbonzini@redhat.com>
Newsgroups linux.kernel
Subject Re: [PATCH v3 05/11] KVM: page track: introduce kvm_page_track_{add,remove}_page
Date 2016-02-19 12:40 +0100
Message-ID <r3RzI-4rt-11@gated-at.bofh.it> (permalink)
References <r23lD-25X-3@gated-at.bofh.it> <r23lD-25X-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw



On 14/02/2016 12:31, Xiao Guangrong wrote:
> +	/* does tracking count wrap? */
> +	WARN_ON((count > 0) && (val + count < val));

This doesn't work, because "val + count" is an int.

> +	/* the last tracker has already gone? */
> +	WARN_ON((count < 0) && (val < !count));

Also, here any underflow should warn.

You can actually use the fact that val + count is an int like this:

    WARN_ON(val + count < 0 || val + count > USHRT_MAX)

and also please return if the warning fires.

> +void kvm_page_track_add_page(struct kvm *kvm, gfn_t gfn,
> +			     enum kvm_page_track_mode mode)
> +{
> +	struct kvm_memslots *slots;
> +	struct kvm_memory_slot *slot;
> +	int i;
> +
> +	for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++) {
> +		slots = __kvm_memslots(kvm, i);
> +
> +		slot = __gfn_to_memslot(slots, gfn);
> +		if (!slot)
> +			continue;
> +
> +		spin_lock(&kvm->mmu_lock);
> +		kvm_slot_page_track_add_page_nolock(kvm, slot, gfn, mode);
> +		spin_unlock(&kvm->mmu_lock);
> +	}
> +}

I don't think it is right to walk all address spaces.  The good news is
that you're not using kvm_page_track_{add,remove}_page at all as far as
I can see, so you can just remove them.

Also, when you will need it, I think it's better to move the
spin_lock/spin_unlock pair outside the for loop.  With this change,
perhaps it's better to leave it to the caller completely---but I cannot
say until I see the caller.

In the meanwhile, please leave out _nolock from the other functions' name.

Paolo

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH v3 05/11] KVM: page track: introduce kvm_page_track_{add,remove}_page Xiao Guangrong <guangrong.xiao@linux.intel.com> - 2016-02-14 12:50 +0100
  Re: [PATCH v3 05/11] KVM: page track: introduce  kvm_page_track_{add,remove}_page Paolo Bonzini <pbonzini@redhat.com> - 2016-02-19 12:40 +0100
  Re: [PATCH v3 05/11] KVM: page track: introduce  kvm_page_track_{add,remove}_page Paolo Bonzini <pbonzini@redhat.com> - 2016-02-19 12:40 +0100

csiph-web