aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/svm.c
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2008-02-07 07:47:38 -0500
committerAvi Kivity <avi@qumranet.com>2008-04-27 04:53:19 -0400
commit33bd6a0b3e8baed6469c8e68ea1b16cb50c4f5af (patch)
tree3f7d915c6146d6e490da9577f0e5e3923b34510b /arch/x86/kvm/svm.c
parent9457a712a2f464c4b21bb7f78998775c69673a0c (diff)
KVM: SVM: move feature detection to hardware setup code
By moving the SVM feature detection from the each_cpu code to the hardware setup code it runs only once. As an additional advance the feature check is now available earlier in the module setup process. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'arch/x86/kvm/svm.c')
-rw-r--r--arch/x86/kvm/svm.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index ff3bc74af728..5f527dc0e162 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -302,7 +302,6 @@ static void svm_hardware_enable(void *garbage)
302 svm_data->asid_generation = 1; 302 svm_data->asid_generation = 1;
303 svm_data->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1; 303 svm_data->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1;
304 svm_data->next_asid = svm_data->max_asid + 1; 304 svm_data->next_asid = svm_data->max_asid + 1;
305 svm_features = cpuid_edx(SVM_CPUID_FUNC);
306 305
307 asm volatile ("sgdt %0" : "=m"(gdt_descr)); 306 asm volatile ("sgdt %0" : "=m"(gdt_descr));
308 gdt = (struct desc_struct *)gdt_descr.address; 307 gdt = (struct desc_struct *)gdt_descr.address;
@@ -411,6 +410,9 @@ static __init int svm_hardware_setup(void)
411 if (r) 410 if (r)
412 goto err_2; 411 goto err_2;
413 } 412 }
413
414 svm_features = cpuid_edx(SVM_CPUID_FUNC);
415
414 return 0; 416 return 0;
415 417
416err_2: 418err_2: