On 4/16/25 11:52 AM, Pierrick Bouvier wrote:
Signed-off-by: Pierrick Bouvier <pierrick.bouv...@linaro.org>
---
  system/main.c | 13 +++++++++++++
  1 file changed, 13 insertions(+)

diff --git a/system/main.c b/system/main.c
index 1c022067349..b8f7157cc34 100644
--- a/system/main.c
+++ b/system/main.c
@@ -69,8 +69,21 @@ int (*qemu_main)(void) = os_darwin_cfrunloop_main;
  int main(int argc, char **argv)
  {
      qemu_init(argc, argv);
+
+    /*
+     * qemu_init acquires the BQL and replay mutex lock. BQL is acquired when
+     * initializing cpus, to block associated threads until initialization is
+     * complete. Replay_mutex lock is acquired on initialization, because it
+     * must be held when configuring icount_mode.
+     *
+     * On MacOS, qemu main event loop runs in a background thread, as main
+     * thread must be reserved for UI. Thus, we need to transfer lock 
ownership,
+     * and the simplest way to do that is to release them, and reacquire them
+     * from qemu_default_main.
+     */
      bql_unlock();
      replay_mutex_unlock();
+
      if (qemu_main) {
          QemuThread main_loop_thread;
          qemu_thread_create(&main_loop_thread, "qemu_main",

Gentle ping on this patch.
@Nicholas: as you asked for this patch, would that be possible for you to review it?

Regards,
Pierrick

Reply via email to