On Thu, Jul 07, 2011 at 04:13:13PM +0200, Joerg Roedel wrote: > Make use of the KVM_TSC_CONTROL feature if available. > > Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> > --- > target-i386/kvm.c | 18 +++++++++++++++++- > 1 files changed, 17 insertions(+), 1 deletions(-) > > diff --git a/target-i386/kvm.c b/target-i386/kvm.c > index 10fb2c4..923d2d5 100644 > --- a/target-i386/kvm.c > +++ b/target-i386/kvm.c > @@ -354,6 +354,7 @@ int kvm_arch_init_vcpu(CPUState *env) > uint32_t unused; > struct kvm_cpuid_entry2 *c; > uint32_t signature[3]; > + int r; > > env->cpuid_features &= kvm_arch_get_supported_cpuid(s, 1, 0, R_EDX); > > @@ -499,7 +500,22 @@ int kvm_arch_init_vcpu(CPUState *env) > > qemu_add_vm_change_state_handler(cpu_update_state, env); > > - return kvm_vcpu_ioctl(env, KVM_SET_CPUID2, &cpuid_data); > + r = kvm_vcpu_ioctl(env, KVM_SET_CPUID2, &cpuid_data); > + if (r) > + return r; > + > +#ifdef KVM_CAP_TSC_CONTROL > + r = kvm_check_extension(env->kvm_state, KVM_CAP_TSC_CONTROL); > + if (r && env->tsc_khz) { > + r = kvm_vcpu_ioctl(env, KVM_SET_TSC_KHZ, env->tsc_khz); > + if (r < 0) { > + fprintf(stderr, "KVM_SET_TSC_KHZ failed\n"); > + return r; > + } > + } > +#endif And this should be moved to kvm_arch_put_registers, in case level == KVM_PUT_FULL_STATE. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html