From 8b20280be34914dfaf0fdc9930a1590b58472a20 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?=
 <zbigniew.kempczynski@intel.com>
Date: Mon, 17 Mar 2025 12:31:46 +0100
Subject: [PATCH] lib/igt_core: reinitialize log_buffer_mutex in child process
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

For multi-process scenario intel-allocator is dedicated thread which
handles clients (children processes) allocations. Main thread which
spawns children may hit point of time where allocator thread locked
some mutex. One of it is log_buffer_mutex used in igt_log(). Children
which would try to call igt_info/warn/debug() family will stuck as
this mutex is already locked.

Reinitialize this mutex in igt_fork() to avoid deadlocks in allocator
scenarios.

Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Dominik Karol PiÄ…tkowski <dominik.karol.piatkowski@intel.com>
Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Reviewed-by: Dominik Karol PiÄ…tkowski <dominik.karol.piatkowski@intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Link: https://lore.kernel.org/r/20250317113146.560156-1-zbigniew.kempczynski@intel.com
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
 lib/igt_core.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/igt_core.c b/lib/igt_core.c
index 9702a9417..c19689a51 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -2600,6 +2600,7 @@ bool __igt_fork(void)
 		test_child = true;
 		pthread_mutex_init(&print_mutex, NULL);
 		pthread_mutex_init(&ahnd_map_mutex, NULL);
+		pthread_mutex_init(&log_buffer_mutex, NULL);
 		ahnd_map = igt_map_create(igt_map_hash_64, igt_map_equal_64);
 		child_pid = getpid();
 		child_tid = -1;
-- 
GitLab