cpu-exec: simplify init_delay_params
With the introduction of QEMU_CLOCK_VIRTUAL_RT, the computation of sc->diff_clk can be simplified nicely: qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + cpu_get_clock_offset() = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - (qemu_clock_get_ns(QEMU_CLOCK_REALTIME) - cpu_get_clock_offset()) = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - (qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + timers_state.cpu_clock_offset) = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL_RT) Cc: Sebastian Tanase <sebastian.tanase@openwide.fr> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a498d0ef37
commit
2e91cc62f2
@ -100,10 +100,8 @@ static void init_delay_params(SyncClocks *sc,
|
|||||||
if (!icount_align_option) {
|
if (!icount_align_option) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sc->realtime_clock = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
|
sc->realtime_clock = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL_RT);
|
||||||
sc->diff_clk = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) -
|
sc->diff_clk = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - sc->realtime_clock;
|
||||||
sc->realtime_clock +
|
|
||||||
cpu_get_clock_offset();
|
|
||||||
sc->last_cpu_icount = cpu->icount_extra + cpu->icount_decr.u16.low;
|
sc->last_cpu_icount = cpu->icount_extra + cpu->icount_decr.u16.low;
|
||||||
if (sc->diff_clk < max_delay) {
|
if (sc->diff_clk < max_delay) {
|
||||||
max_delay = sc->diff_clk;
|
max_delay = sc->diff_clk;
|
||||||
|
17
cpus.c
17
cpus.c
@ -229,23 +229,6 @@ int64_t cpu_get_clock(void)
|
|||||||
return ti;
|
return ti;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return the offset between the host clock and virtual CPU clock */
|
|
||||||
int64_t cpu_get_clock_offset(void)
|
|
||||||
{
|
|
||||||
int64_t ti;
|
|
||||||
unsigned start;
|
|
||||||
|
|
||||||
do {
|
|
||||||
start = seqlock_read_begin(&timers_state.vm_clock_seqlock);
|
|
||||||
ti = timers_state.cpu_clock_offset;
|
|
||||||
if (!timers_state.cpu_ticks_enabled) {
|
|
||||||
ti -= get_clock();
|
|
||||||
}
|
|
||||||
} while (seqlock_read_retry(&timers_state.vm_clock_seqlock, start));
|
|
||||||
|
|
||||||
return -ti;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* enable cpu_get_ticks()
|
/* enable cpu_get_ticks()
|
||||||
* Caller must hold BQL which server as mutex for vm_clock_seqlock.
|
* Caller must hold BQL which server as mutex for vm_clock_seqlock.
|
||||||
*/
|
*/
|
||||||
|
@ -838,7 +838,6 @@ static inline int64_t get_clock(void)
|
|||||||
int64_t cpu_get_icount_raw(void);
|
int64_t cpu_get_icount_raw(void);
|
||||||
int64_t cpu_get_icount(void);
|
int64_t cpu_get_icount(void);
|
||||||
int64_t cpu_get_clock(void);
|
int64_t cpu_get_clock(void);
|
||||||
int64_t cpu_get_clock_offset(void);
|
|
||||||
int64_t cpu_icount_to_ns(int64_t icount);
|
int64_t cpu_icount_to_ns(int64_t icount);
|
||||||
|
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user