mirror of https://github.com/xemu-project/xemu.git
kvmclock: use the updated system_timer_msr
Fixes e2b6c17
(kvmclock: update system_time_msr address forcibly)
which makes a call to get the latest value of the address
stored in system_timer_msr, but then uses the old address anyway.
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Message-Id: <59b67db0bd15a46ab47c3aa657c81a4c11f168ea.1506702472.git.Jim.Somerville@windriver.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
11748ba72e
commit
346b1215b1
|
@ -62,7 +62,7 @@ static uint64_t kvmclock_current_nsec(KVMClockState *s)
|
||||||
{
|
{
|
||||||
CPUState *cpu = first_cpu;
|
CPUState *cpu = first_cpu;
|
||||||
CPUX86State *env = cpu->env_ptr;
|
CPUX86State *env = cpu->env_ptr;
|
||||||
hwaddr kvmclock_struct_pa = env->system_time_msr & ~1ULL;
|
hwaddr kvmclock_struct_pa;
|
||||||
uint64_t migration_tsc = env->tsc;
|
uint64_t migration_tsc = env->tsc;
|
||||||
struct pvclock_vcpu_time_info time;
|
struct pvclock_vcpu_time_info time;
|
||||||
uint64_t delta;
|
uint64_t delta;
|
||||||
|
@ -77,6 +77,7 @@ static uint64_t kvmclock_current_nsec(KVMClockState *s)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kvmclock_struct_pa = env->system_time_msr & ~1ULL;
|
||||||
cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
|
cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time));
|
||||||
|
|
||||||
assert(time.tsc_timestamp <= migration_tsc);
|
assert(time.tsc_timestamp <= migration_tsc);
|
||||||
|
|
Loading…
Reference in New Issue