Revision 1a03675d target-i386/kvm.c
b/target-i386/kvm.c | ||
---|---|---|
35 | 35 |
do { } while (0) |
36 | 36 |
#endif |
37 | 37 |
|
38 |
#define MSR_KVM_WALL_CLOCK 0x11 |
|
39 |
#define MSR_KVM_SYSTEM_TIME 0x12 |
|
40 |
|
|
38 | 41 |
#ifdef KVM_CAP_EXT_CPUID |
39 | 42 |
|
40 | 43 |
static struct kvm_cpuid2 *try_get_cpuid(KVMState *s, int max) |
... | ... | |
494 | 497 |
kvm_msr_entry_set(&msrs[n++], MSR_FMASK, env->fmask); |
495 | 498 |
kvm_msr_entry_set(&msrs[n++], MSR_LSTAR, env->lstar); |
496 | 499 |
#endif |
500 |
kvm_msr_entry_set(&msrs[n++], MSR_KVM_SYSTEM_TIME, env->system_time_msr); |
|
501 |
kvm_msr_entry_set(&msrs[n++], MSR_KVM_WALL_CLOCK, env->wall_clock_msr); |
|
502 |
|
|
497 | 503 |
msr_data.info.nmsrs = n; |
498 | 504 |
|
499 | 505 |
return kvm_vcpu_ioctl(env, KVM_SET_MSRS, &msr_data); |
... | ... | |
634 | 640 |
msrs[n++].index = MSR_FMASK; |
635 | 641 |
msrs[n++].index = MSR_LSTAR; |
636 | 642 |
#endif |
643 |
msrs[n++].index = MSR_KVM_SYSTEM_TIME; |
|
644 |
msrs[n++].index = MSR_KVM_WALL_CLOCK; |
|
645 |
|
|
637 | 646 |
msr_data.info.nmsrs = n; |
638 | 647 |
ret = kvm_vcpu_ioctl(env, KVM_GET_MSRS, &msr_data); |
639 | 648 |
if (ret < 0) |
... | ... | |
670 | 679 |
case MSR_IA32_TSC: |
671 | 680 |
env->tsc = msrs[i].data; |
672 | 681 |
break; |
682 |
case MSR_KVM_SYSTEM_TIME: |
|
683 |
env->system_time_msr = msrs[i].data; |
|
684 |
break; |
|
685 |
case MSR_KVM_WALL_CLOCK: |
|
686 |
env->wall_clock_msr = msrs[i].data; |
|
687 |
break; |
|
673 | 688 |
} |
674 | 689 |
} |
675 | 690 |
|
Also available in: Unified diff