device: 0.874 performance: 0.770 files: 0.709 boot: 0.705 graphic: 0.682 socket: 0.672 PID: 0.662 vnc: 0.624 network: 0.594 semantic: 0.457 debug: 0.436 KVM: 0.401 permissions: 0.352 other: 0.262 ptimer period sporadically too long Description of problem: A ptimer in a custom device with a frequency of 10kHz is sporadically called after more than 100,000ns in virtual time have elapsed. With a icount shift of 4 or 5 this happens almost everytime before the linux guest can even finish booting. With a shift of 0 this happens very rarely, but it does occur from time to time. Steps to reproduce: 1. setup a ptimer with a frequency of 10kHz and assert that the time passed between callbacks is exactly 100,000ns 2. run 3. wait for boom Additional information: ``` // Timer setup ptimer_transaction_begin(state->timer); ptimer_set_freq(state->timer, 10000); ptimer_run(state->timer, 0); ptimer_transaction_commit(state->timer); ``` ``` // timer callback int64_t now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); static int64_t last = 0; if (last > 0) { if (now - last != 100000) { fprintf(stderr, "error tick %ld after %ld is incorrect: %ld\n", now, last, now - last); assert(0); } } last = now; ``` ``` error tick 47867503135 after 47867400000 is incorrect: 103135 qemu-system-x86_64: ../...file.c:119: timer_callback: Assertion `0' failed. ```