summaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/vmx.c
diff options
context:
space:
mode:
authorZachary Amsden2009-09-29 23:38:37 +0200
committerAvi Kivity2009-12-03 08:32:13 +0100
commit3230bb4707278dba25e24cd0a11ea7b2337678ee (patch)
tree9548dc371d338b1eb7ee93ef077c70a050cd303f /arch/x86/kvm/vmx.c
parentKVM: Fix printk name error in svm.c (diff)
downloadkernel-qcow2-linux-3230bb4707278dba25e24cd0a11ea7b2337678ee.tar.gz
kernel-qcow2-linux-3230bb4707278dba25e24cd0a11ea7b2337678ee.tar.xz
kernel-qcow2-linux-3230bb4707278dba25e24cd0a11ea7b2337678ee.zip
KVM: Fix hotplug of CPUs
Both VMX and SVM require per-cpu memory allocation, which is done at module init time, for only online cpus. Backend was not allocating enough structure for all possible CPUs, so new CPUs coming online could not be hardware enabled. Signed-off-by: Zachary Amsden <zamsden@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch/x86/kvm/vmx.c')
-rw-r--r--arch/x86/kvm/vmx.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index a187570e4837..97f4265cda38 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1350,15 +1350,17 @@ static void free_kvm_area(void)
{
int cpu;
- for_each_online_cpu(cpu)
+ for_each_possible_cpu(cpu) {
free_vmcs(per_cpu(vmxarea, cpu));
+ per_cpu(vmxarea, cpu) = NULL;
+ }
}
static __init int alloc_kvm_area(void)
{
int cpu;
- for_each_online_cpu(cpu) {
+ for_each_possible_cpu(cpu) {
struct vmcs *vmcs;
vmcs = alloc_vmcs_cpu(cpu);