qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] system/main: comment lock rationale
@ 2025-05-15 17:46 Pierrick Bouvier
  2025-05-15 17:48 ` Pierrick Bouvier
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Pierrick Bouvier @ 2025-05-15 17:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: qemu-trivial, npiggin, Paolo Bonzini, Pierrick Bouvier

Signed-off-by: Pierrick Bouvier <pierrick.bouvier@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",
-- 
2.47.2



^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [PATCH] system/main: comment lock rationale
@ 2025-04-16 18:52 Pierrick Bouvier
  2025-04-28 19:33 ` Pierrick Bouvier
  0 siblings, 1 reply; 6+ messages in thread
From: Pierrick Bouvier @ 2025-04-16 18:52 UTC (permalink / raw)
  To: qemu-devel
  Cc: philmd, Phil Dennis-Jordan, Paolo Bonzini, Nicholas Piggin,
	Stefan Hajnoczi, Pierrick Bouvier

Signed-off-by: Pierrick Bouvier <pierrick.bouvier@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",
-- 
2.39.5



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-05-27  8:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-15 17:46 [PATCH] system/main: comment lock rationale Pierrick Bouvier
2025-05-15 17:48 ` Pierrick Bouvier
2025-05-24 12:45 ` Richard Henderson
2025-05-27  8:55 ` Richard Henderson
  -- strict thread matches above, loose matches on Subject: below --
2025-04-16 18:52 Pierrick Bouvier
2025-04-28 19:33 ` Pierrick Bouvier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).