diff options
author | Stafford Horne <shorne@gmail.com> | 2017-07-15 20:57:21 +0900 |
---|---|---|
committer | Stafford Horne <shorne@gmail.com> | 2017-10-21 06:37:06 +0900 |
commit | 373b259b660a8ff0960a979481c19b78d51e023a (patch) | |
tree | e92c6fd505f963f4ea297a0a1a4699eeef4b74b9 /hw/openrisc/cputimer.c | |
parent | 13f1c773640171efa8175b1ba6dcd624c1ad68c1 (diff) | |
download | qemu-373b259b660a8ff0960a979481c19b78d51e023a.zip |
openrisc: Only kick cpu on timeout, not on update
Previously we were kicking the cpu on every update. This caused
problems noticeable in SMP configurations where one CPU got pinned
continuously servicing timer exceptions.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Stafford Horne <shorne@gmail.com>
Diffstat (limited to 'hw/openrisc/cputimer.c')
-rw-r--r-- | hw/openrisc/cputimer.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/openrisc/cputimer.c b/hw/openrisc/cputimer.c index 4c5415ff75..850f88761c 100644 --- a/hw/openrisc/cputimer.c +++ b/hw/openrisc/cputimer.c @@ -78,7 +78,6 @@ void cpu_openrisc_timer_update(OpenRISCCPU *cpu) } next = now + (uint64_t)wait * TIMER_PERIOD; timer_mod(cpu->env.timer, next); - qemu_cpu_kick(CPU(cpu)); } void cpu_openrisc_count_start(OpenRISCCPU *cpu) @@ -120,6 +119,7 @@ static void openrisc_timer_cb(void *opaque) } cpu_openrisc_timer_update(cpu); + qemu_cpu_kick(CPU(cpu)); } static const VMStateDescription vmstate_or1k_timer = { |