[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] system/main: comment lock rationale
From: |
Pierrick Bouvier |
Subject: |
[PATCH] system/main: comment lock rationale |
Date: |
Thu, 15 May 2025 10:46:41 -0700 |
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
- [PATCH] system/main: comment lock rationale,
Pierrick Bouvier <=