Revision 1a03675d
b/target-i386/cpu.h | ||
---|---|---|
651 | 651 |
target_ulong fmask; |
652 | 652 |
target_ulong kernelgsbase; |
653 | 653 |
#endif |
654 |
uint64_t system_time_msr; |
|
655 |
uint64_t wall_clock_msr; |
|
654 | 656 |
|
655 | 657 |
uint64_t tsc; |
656 | 658 |
|
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 |
|
b/target-i386/machine.c | ||
---|---|---|
461 | 461 |
VMSTATE_UINT64_ARRAY_V(mce_banks, CPUState, MCE_BANKS_DEF *4, 10), |
462 | 462 |
/* rdtscp */ |
463 | 463 |
VMSTATE_UINT64_V(tsc_aux, CPUState, 11), |
464 |
/* KVM pvclock msr */ |
|
465 |
VMSTATE_UINT64_V(system_time_msr, CPUState, 11), |
|
466 |
VMSTATE_UINT64_V(wall_clock_msr, CPUState, 11), |
|
464 | 467 |
VMSTATE_END_OF_LIST() |
465 | 468 |
/* The above list is not sorted /wrt version numbers, watch out! */ |
466 | 469 |
} |
Also available in: Unified diff