aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Mammedov <imammedo@redhat.com>2014-12-01 12:29:24 -0500
committerPaolo Bonzini <pbonzini@redhat.com>2014-12-04 09:29:09 -0500
commit7f379cff11fb9e00e0ff9eff8fbc39ddfd4b1bec (patch)
tree1d6d8facc9b31c5c34bf1cd161b5da5c8b7282ae
parent5a38b6e6b41b4819516e13770ec02b7f0e622a57 (diff)
kvm: update_memslots: drop not needed check for the same slot
UP/DOWN shift loops will shift array in needed direction and stop at place where new slot should be placed regardless of old slot size. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--virt/kvm/kvm_main.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 407277b33dc8..278ed65cc9c5 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -679,20 +679,17 @@ static void update_memslots(struct kvm_memslots *slots,
679 struct kvm_memory_slot *mslots = slots->memslots; 679 struct kvm_memory_slot *mslots = slots->memslots;
680 680
681 WARN_ON(mslots[i].id != id); 681 WARN_ON(mslots[i].id != id);
682 if (new->npages < mslots[i].npages) { 682 while (i < KVM_MEM_SLOTS_NUM - 1 &&
683 while (i < KVM_MEM_SLOTS_NUM - 1 && 683 new->npages < mslots[i + 1].npages) {
684 new->npages < mslots[i + 1].npages) { 684 mslots[i] = mslots[i + 1];
685 mslots[i] = mslots[i + 1]; 685 slots->id_to_index[mslots[i].id] = i;
686 slots->id_to_index[mslots[i].id] = i; 686 i++;
687 i++; 687 }
688 } 688 while (i > 0 &&
689 } else { 689 new->npages > mslots[i - 1].npages) {
690 while (i > 0 && 690 mslots[i] = mslots[i - 1];
691 new->npages > mslots[i - 1].npages) { 691 slots->id_to_index[mslots[i].id] = i;
692 mslots[i] = mslots[i - 1]; 692 i--;
693 slots->id_to_index[mslots[i].id] = i;
694 i--;
695 }
696 } 693 }
697 694
698 mslots[i] = *new; 695 mslots[i] = *new;