diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-06-16 16:59:00 +0000 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-06-16 16:59:33 +0000 |
| commit | 9aba81d8eb048db908c94a3c40c25a5fde0caee6 (patch) | |
| tree | b765e7fb5e9a3c2143c68b0414e0055adb70e785 /results/classifier/118/device/2703 | |
| parent | b89a938452613061c0f1f23e710281cf5c83cb29 (diff) | |
| download | qemu-analysis-9aba81d8eb048db908c94a3c40c25a5fde0caee6.tar.gz qemu-analysis-9aba81d8eb048db908c94a3c40c25a5fde0caee6.zip | |
add 18th iteration of classifier
Diffstat (limited to 'results/classifier/118/device/2703')
| -rw-r--r-- | results/classifier/118/device/2703 | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/results/classifier/118/device/2703 b/results/classifier/118/device/2703 new file mode 100644 index 000000000..4b618f0f7 --- /dev/null +++ b/results/classifier/118/device/2703 @@ -0,0 +1,70 @@ +device: 0.874 +x86: 0.867 +virtual: 0.783 +performance: 0.770 +ppc: 0.732 +files: 0.709 +boot: 0.705 +risc-v: 0.701 +kernel: 0.694 +graphic: 0.682 +socket: 0.672 +register: 0.670 +PID: 0.662 +vnc: 0.624 +network: 0.594 +architecture: 0.574 +hypervisor: 0.571 +peripherals: 0.558 +arm: 0.517 +VMM: 0.476 +semantic: 0.457 +debug: 0.436 +TCG: 0.434 +KVM: 0.401 +i386: 0.389 +permissions: 0.352 +mistranslation: 0.318 +assembly: 0.212 +user-level: 0.125 + +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. +``` |