Skip to content
Snippets Groups Projects
  1. Jan 26, 2024
    • Stefan Hajnoczi's avatar
      monitor: only run coroutine commands in qemu_aio_context · f389309d
      Stefan Hajnoczi authored
      monitor_qmp_dispatcher_co() runs in the iohandler AioContext that is not
      polled during nested event loops. The coroutine currently reschedules
      itself in the main loop's qemu_aio_context AioContext, which is polled
      during nested event loops. One known problem is that QMP device-add
      calls drain_call_rcu(), which temporarily drops the BQL, leading to all
      sorts of havoc like other vCPU threads re-entering device emulation code
      while another vCPU thread is waiting in device emulation code with
      aio_poll().
      
      Paolo Bonzini suggested running non-coroutine QMP handlers in the
      iohandler AioContext. This avoids trouble with nested event loops. His
      original idea was to move coroutine rescheduling to
      monitor_qmp_dispatch(), but I resorted to moving it to qmp_dispatch()
      because we don't know if the QMP handler needs to run in coroutine
      context in monitor_qmp_dispatch(). monitor_qmp_dispatch() would have
      been nicer since it's associated with the monitor implementation and not
      as general as qmp_dispatch(), which is also used by qemu-ga.
      
      A number of qemu-iotests need updated .out files because the order of
      QMP events vs QMP responses has changed.
      
      Solves Issue #1933.
      
      Cc: qemu-stable@nongnu.org
      Fixes: 7bed8995 ("device_core: use drain_call_rcu in in qmp_device_add")
      Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2215192
      Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2214985
      Buglink: https://issues.redhat.com/browse/RHEL-17369
      
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Message-ID: <20240118144823.1497953-4-stefanha@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Tested-by: default avatarFiona Ebner <f.ebner@proxmox.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      (cherry picked from commit effd60c878176bcaf97fa7ce2b12d04bb8ead6f7)
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      f389309d
  2. Nov 17, 2023
  3. Nov 06, 2023
  4. Oct 04, 2023
  5. Aug 31, 2023
  6. Jun 20, 2023
  7. Jun 06, 2023
    • Paolo Bonzini's avatar
      atomics: eliminate mb_read/mb_set · 06831001
      Paolo Bonzini authored
      
      qatomic_mb_read and qatomic_mb_set were the very first atomic primitives
      introduced for QEMU; their semantics are unclear and they provide a false
      sense of safety.
      
      The last use of qatomic_mb_read() has been removed, so delete it.
      qatomic_mb_set() instead can survive as an optimized
      qatomic_set()+smp_mb(), similar to Linux's smp_store_mb(), but
      rename it to qatomic_set_mb() to match the order of the two
      operations.
      
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      06831001
  8. May 25, 2023
  9. Apr 25, 2023
  10. Mar 13, 2023
  11. Mar 02, 2023
  12. Mar 01, 2023
  13. Feb 04, 2023
Loading