aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm/kvm-s390.c
diff options
context:
space:
mode:
authorGleb Natapov <gleb@redhat.com>2009-06-09 08:56:29 -0400
committerAvi Kivity <avi@redhat.com>2009-09-10 01:32:52 -0400
commit988a2cae6a3c0dea6df59808a935a9a697bfc28c (patch)
treec1118d86c5d6f24fe738c608917b0affb311f26d /arch/s390/kvm/kvm-s390.c
parent73880c80aa9c8dc353cd0ad26579023213cd5314 (diff)
KVM: Use macro to iterate over vcpus.
[christian: remove unused variables on s390] Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/s390/kvm/kvm-s390.c')
-rw-r--r--arch/s390/kvm/kvm-s390.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 098bfa6fbdf6..07ced89740d7 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -211,13 +211,17 @@ void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
211static void kvm_free_vcpus(struct kvm *kvm) 211static void kvm_free_vcpus(struct kvm *kvm)
212{ 212{
213 unsigned int i; 213 unsigned int i;
214 struct kvm_vcpu *vcpu;
214 215
215 for (i = 0; i < KVM_MAX_VCPUS; ++i) { 216 kvm_for_each_vcpu(i, vcpu, kvm)
216 if (kvm->vcpus[i]) { 217 kvm_arch_vcpu_destroy(vcpu);
217 kvm_arch_vcpu_destroy(kvm->vcpus[i]); 218
218 kvm->vcpus[i] = NULL; 219 mutex_lock(&kvm->lock);
219 } 220 for (i = 0; i < atomic_read(&kvm->online_vcpus); i++)
220 } 221 kvm->vcpus[i] = NULL;
222
223 atomic_set(&kvm->online_vcpus, 0);
224 mutex_unlock(&kvm->lock);
221} 225}
222 226
223void kvm_arch_sync_events(struct kvm *kvm) 227void kvm_arch_sync_events(struct kvm *kvm)
@@ -314,8 +318,6 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
314 BUG_ON(!kvm->arch.sca); 318 BUG_ON(!kvm->arch.sca);
315 if (!kvm->arch.sca->cpu[id].sda) 319 if (!kvm->arch.sca->cpu[id].sda)
316 kvm->arch.sca->cpu[id].sda = (__u64) vcpu->arch.sie_block; 320 kvm->arch.sca->cpu[id].sda = (__u64) vcpu->arch.sie_block;
317 else
318 BUG_ON(!kvm->vcpus[id]); /* vcpu does already exist */
319 vcpu->arch.sie_block->scaoh = (__u32)(((__u64)kvm->arch.sca) >> 32); 321 vcpu->arch.sie_block->scaoh = (__u32)(((__u64)kvm->arch.sca) >> 32);
320 vcpu->arch.sie_block->scaol = (__u32)(__u64)kvm->arch.sca; 322 vcpu->arch.sie_block->scaol = (__u32)(__u64)kvm->arch.sca;
321 323
@@ -683,6 +685,7 @@ int kvm_arch_set_memory_region(struct kvm *kvm,
683 int user_alloc) 685 int user_alloc)
684{ 686{
685 int i; 687 int i;
688 struct kvm_vcpu *vcpu;
686 689
687 /* A few sanity checks. We can have exactly one memory slot which has 690 /* A few sanity checks. We can have exactly one memory slot which has
688 to start at guest virtual zero and which has to be located at a 691 to start at guest virtual zero and which has to be located at a
@@ -707,14 +710,10 @@ int kvm_arch_set_memory_region(struct kvm *kvm,
707 return -EINVAL; 710 return -EINVAL;
708 711
709 /* request update of sie control block for all available vcpus */ 712 /* request update of sie control block for all available vcpus */
710 for (i = 0; i < KVM_MAX_VCPUS; ++i) { 713 kvm_for_each_vcpu(i, vcpu, kvm) {
711 if (kvm->vcpus[i]) { 714 if (test_and_set_bit(KVM_REQ_MMU_RELOAD, &vcpu->requests))
712 if (test_and_set_bit(KVM_REQ_MMU_RELOAD, 715 continue;
713 &kvm->vcpus[i]->requests)) 716 kvm_s390_inject_sigp_stop(vcpu, ACTION_RELOADVCPU_ON_STOP);
714 continue;
715 kvm_s390_inject_sigp_stop(kvm->vcpus[i],
716 ACTION_RELOADVCPU_ON_STOP);
717 }
718 } 717 }
719 718
720 return 0; 719 return 0;