cpus: kick all vCPUs when running thread=single
commite8f22f76845e08ec838d5198a8c25d207ba52ff0
authorAlex Bennée <alex.bennee@linaro.org>
Tue, 1 Oct 2019 16:04:26 +0000 (1 17:04 +0100)
committerRichard Henderson <richard.henderson@linaro.org>
Mon, 14 Oct 2019 14:10:57 +0000 (14 07:10 -0700)
tree5368e699b734aaf45fe13991140922b6c2eb592b
parentb7ce3cff21e1c944a17ddfc088545d8662a278a7
cpus: kick all vCPUs when running thread=single

qemu_cpu_kick is used for a number of reasons including to indicate
there is work to be done. However when thread=single the old
qemu_cpu_kick_rr_cpu only advanced the vCPU to the next executing one
which can lead to a hang in the case that:

  a) the kick is from outside the vCPUs (e.g. iothread)
  b) the timers are paused (i.e. iothread calling run_on_cpu)

To avoid this lets split qemu_cpu_kick_rr into two functions. One for
the timer which continues to advance to the next timeslice and another
for all other kicks.

Message-Id: <20191001160426.26644-1-alex.bennee@linaro.org>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
cpus.c