From c0367fc30e2083fd31dca2dbc223ff6975b4d1dc Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Mon, 7 Nov 2022 09:39:14 +0100 Subject: [PATCH] libdrm/iris: synchronization The Morph browser seems to access libdrm multi-threaded. Put this into a separate commit in order to revert it easily. issue #4664 --- repos/libports/src/lib/libdrm/ioctl_iris.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/repos/libports/src/lib/libdrm/ioctl_iris.cc b/repos/libports/src/lib/libdrm/ioctl_iris.cc index f742cfe8a7..69f20325f8 100644 --- a/repos/libports/src/lib/libdrm/ioctl_iris.cc +++ b/repos/libports/src/lib/libdrm/ioctl_iris.cc @@ -536,6 +536,7 @@ class Drm_call Genode::Env &_env { *vfs_gpu_env() }; Genode::Heap _heap { _env.ram(), _env.rm() }; Gpu::Connection _gpu_session { _env }; + Genode::Mutex _drm_mutex { }; Gpu::Info_intel const &_gpu_info { *_gpu_session.attached_info() }; @@ -1363,6 +1364,8 @@ class Drm_call int ioctl(unsigned long request, void *arg) { + Genode::Mutex::Guard guard { _drm_mutex }; + bool const device = device_ioctl(request); return device ? _device_ioctl(device_number(request), arg) : _generic_ioctl(command_number(request), arg);