This series moves the icount state under the same seqlock as the "normal" vm_clock implementation.
It is not yet 100% thread-safe, because the CPU list should be moved under RCU protection (due to the call to !all_cpu_threads_idle() in qemu_clock_warp). However it is a substantial step forward, the only uncovered case being CPU hotplug. Please review. Paolo Paolo Bonzini (8): timers: extract timer_mod_ns_locked and timerlist_rearm timers: add timer_mod_anticipate and timer_mod_anticipate_ns timers: use cpu_get_icount() directly timers: reorganize icount_warp_rt timers: prepare the code for future races in calling qemu_clock_warp timers: introduce cpu_get_clock_locked timers: document (future) locking rules for icount timers: make icount thread-safe cpus.c | 110 ++++++++++++++++++++++++++++++++++++------------- include/qemu/timer.h | 26 +++++++++ qemu-timer.c | 74 +++++++++++++++++++------ 4 files changed, 163 insertions(+), 47 deletions(-) create mode 100644 include/qemu/seqlock.h -- 1.8.3.1