On Mon, Sep 10, 2018 at 19:27:48 -0400, Emilio G. Cota wrote: > Signed-off-by: Emilio G. Cota <c...@braap.org> > --- > cpus.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/cpus.c b/cpus.c > index ebc13bac2d..38dabb138d 100644 > --- a/cpus.c > +++ b/cpus.c > @@ -250,16 +250,12 @@ void cpu_update_icount(CPUState *cpu) > int64_t executed = cpu_get_icount_executed(cpu); > cpu->icount_budget -= executed; > > -#ifndef CONFIG_ATOMIC64 > seqlock_write_lock(&timers_state.vm_clock_seqlock, > &timers_state.vm_clock_lock); > -#endif > atomic_set__nocheck(&timers_state.qemu_icount, > timers_state.qemu_icount + executed); > -#ifndef CONFIG_ATOMIC64 > seqlock_write_unlock(&timers_state.vm_clock_seqlock, > &timers_state.vm_clock_lock); > -#endif > }
Applying this on my local tree is deadlocking icount, since cpu_update_icount is called from cpu_get_icount_raw_locked: #6 cpu_update_icount (cpu=<optimized out>) at /data/src/qemu/cpus.c:257 #7 0x000055a6fbc7ae5c in cpu_get_icount_raw_locked () at /data/src/qemu/cpus.c:271 #8 0x000055a6fbc7ae99 in cpu_get_icount_locked () at /data/src/qemu/cpus.c:279 #9 0x000055a6fbc7b3ac in cpu_get_icount () at /data/src/qemu/cpus.c:302 #10 0x000055a6fc0f3a05 in qemu_clock_get_ns (type=type@entry=QEMU_CLOCK_VIRTUAL) at /data/src/qemu/util/qemu-timer.c:601 I am however not sure what Paolo's queued tree looks like, so I might be missing something. Paolo: is that tree available anywhere? Thanks, Emilio