aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kvm/vcpu.c
diff options
context:
space:
mode:
authorJes Sorensen <jes@sgi.com>2009-01-21 09:16:43 -0500
committerAvi Kivity <avi@redhat.com>2009-03-24 05:03:07 -0400
commit934d534f8a5a39e20d5682b3a3a45ff351706b59 (patch)
treef1e6ce5330028a9aa942623c6706af8ca2ce2130 /arch/ia64/kvm/vcpu.c
parentb7e6e4d3602c738b8f61225d9f4514945df52f07 (diff)
KVM: ia64: dynamic nr online cpus
Account for number of online cpus and use that in loops iterating over the list of vpus instead of scanning the full array unconditionally. This patch is a building block to facilitate allowing to bump up the size of MAX_VCPUS significantly. Signed-off-by: Jes Sorensen <jes@sgi.com> Acked-by : Xiantao Zhang <xiantao.zhang@intel.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/ia64/kvm/vcpu.c')
-rw-r--r--arch/ia64/kvm/vcpu.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/ia64/kvm/vcpu.c b/arch/ia64/kvm/vcpu.c
index 4d8be4c252fa..d4d280505878 100644
--- a/arch/ia64/kvm/vcpu.c
+++ b/arch/ia64/kvm/vcpu.c
@@ -807,12 +807,15 @@ static inline void vcpu_set_itm(struct kvm_vcpu *vcpu, u64 val);
807static void vcpu_set_itc(struct kvm_vcpu *vcpu, u64 val) 807static void vcpu_set_itc(struct kvm_vcpu *vcpu, u64 val)
808{ 808{
809 struct kvm_vcpu *v; 809 struct kvm_vcpu *v;
810 struct kvm *kvm;
810 int i; 811 int i;
811 long itc_offset = val - ia64_getreg(_IA64_REG_AR_ITC); 812 long itc_offset = val - ia64_getreg(_IA64_REG_AR_ITC);
812 unsigned long vitv = VCPU(vcpu, itv); 813 unsigned long vitv = VCPU(vcpu, itv);
813 814
815 kvm = (struct kvm *)KVM_VM_BASE;
816
814 if (vcpu->vcpu_id == 0) { 817 if (vcpu->vcpu_id == 0) {
815 for (i = 0; i < KVM_MAX_VCPUS; i++) { 818 for (i = 0; i < kvm->arch.online_vcpus; i++) {
816 v = (struct kvm_vcpu *)((char *)vcpu + 819 v = (struct kvm_vcpu *)((char *)vcpu +
817 sizeof(struct kvm_vcpu_data) * i); 820 sizeof(struct kvm_vcpu_data) * i);
818 VMX(v, itc_offset) = itc_offset; 821 VMX(v, itc_offset) = itc_offset;