aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStafford Horne <shorne@gmail.com>2017-07-15 20:57:21 +0900
committerStafford Horne <shorne@gmail.com>2017-10-21 06:37:06 +0900
commit373b259b660a8ff0960a979481c19b78d51e023a (patch)
treee92c6fd505f963f4ea297a0a1a4699eeef4b74b9
parent13f1c773640171efa8175b1ba6dcd624c1ad68c1 (diff)
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>
-rw-r--r--hw/openrisc/cputimer.c2
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 = {