diff options
author | Marcelo Tosatti <mtosatti@redhat.com> | 2012-11-27 20:29:02 -0500 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2012-11-27 20:29:14 -0500 |
commit | 42897d866b120547777ae1fd316680ec53356d9c (patch) | |
tree | 29eb544b4361d964dab0d1b3e27f9f2e64597daf /arch | |
parent | d828199e84447795c6669ff0e6c6d55eb9beeff6 (diff) |
KVM: x86: add kvm_arch_vcpu_postcreate callback, move TSC initialization
TSC initialization will soon make use of online_vcpus.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kvm/kvm-ia64.c | 5 | ||||
-rw-r--r-- | arch/powerpc/kvm/powerpc.c | 5 | ||||
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 5 | ||||
-rw-r--r-- | arch/x86/kvm/svm.c | 1 | ||||
-rw-r--r-- | arch/x86/kvm/vmx.c | 2 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 13 |
6 files changed, 28 insertions, 3 deletions
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index c71acd7f9a13..83b54530916e 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c | |||
@@ -1330,6 +1330,11 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) | |||
1330 | return 0; | 1330 | return 0; |
1331 | } | 1331 | } |
1332 | 1332 | ||
1333 | int kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) | ||
1334 | { | ||
1335 | return 0; | ||
1336 | } | ||
1337 | |||
1333 | int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) | 1338 | int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) |
1334 | { | 1339 | { |
1335 | return -EINVAL; | 1340 | return -EINVAL; |
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index deb0d596d815..f9ab12aea829 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c | |||
@@ -439,6 +439,11 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id) | |||
439 | return vcpu; | 439 | return vcpu; |
440 | } | 440 | } |
441 | 441 | ||
442 | int kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) | ||
443 | { | ||
444 | return 0; | ||
445 | } | ||
446 | |||
442 | void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu) | 447 | void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu) |
443 | { | 448 | { |
444 | /* Make sure we're not using the vcpu anymore */ | 449 | /* Make sure we're not using the vcpu anymore */ |
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 38883f0bf27e..731ddeee32e4 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -355,6 +355,11 @@ static void kvm_s390_vcpu_initial_reset(struct kvm_vcpu *vcpu) | |||
355 | atomic_set_mask(CPUSTAT_STOPPED, &vcpu->arch.sie_block->cpuflags); | 355 | atomic_set_mask(CPUSTAT_STOPPED, &vcpu->arch.sie_block->cpuflags); |
356 | } | 356 | } |
357 | 357 | ||
358 | int kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) | ||
359 | { | ||
360 | return 0; | ||
361 | } | ||
362 | |||
358 | int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) | 363 | int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) |
359 | { | 364 | { |
360 | atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH | | 365 | atomic_set(&vcpu->arch.sie_block->cpuflags, CPUSTAT_ZARCH | |
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 94f5ceba7e1e..161a5fa66d82 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -1251,7 +1251,6 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) | |||
1251 | svm->vmcb_pa = page_to_pfn(page) << PAGE_SHIFT; | 1251 | svm->vmcb_pa = page_to_pfn(page) << PAGE_SHIFT; |
1252 | svm->asid_generation = 0; | 1252 | svm->asid_generation = 0; |
1253 | init_vmcb(svm); | 1253 | init_vmcb(svm); |
1254 | kvm_write_tsc(&svm->vcpu, 0); | ||
1255 | 1254 | ||
1256 | err = fx_init(&svm->vcpu); | 1255 | err = fx_init(&svm->vcpu); |
1257 | if (err) | 1256 | if (err) |
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 896efd4842e7..bb18923bf632 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c | |||
@@ -3896,8 +3896,6 @@ static int vmx_vcpu_setup(struct vcpu_vmx *vmx) | |||
3896 | vmcs_writel(CR0_GUEST_HOST_MASK, ~0UL); | 3896 | vmcs_writel(CR0_GUEST_HOST_MASK, ~0UL); |
3897 | set_cr4_guest_host_mask(vmx); | 3897 | set_cr4_guest_host_mask(vmx); |
3898 | 3898 | ||
3899 | kvm_write_tsc(&vmx->vcpu, 0); | ||
3900 | |||
3901 | return 0; | 3899 | return 0; |
3902 | } | 3900 | } |
3903 | 3901 | ||
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index a7b97a49d8ad..f3c069efc72a 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -6320,6 +6320,19 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) | |||
6320 | return r; | 6320 | return r; |
6321 | } | 6321 | } |
6322 | 6322 | ||
6323 | int kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) | ||
6324 | { | ||
6325 | int r; | ||
6326 | |||
6327 | r = vcpu_load(vcpu); | ||
6328 | if (r) | ||
6329 | return r; | ||
6330 | kvm_write_tsc(vcpu, 0); | ||
6331 | vcpu_put(vcpu); | ||
6332 | |||
6333 | return r; | ||
6334 | } | ||
6335 | |||
6323 | void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) | 6336 | void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) |
6324 | { | 6337 | { |
6325 | int r; | 6338 | int r; |