summaryrefslogtreecommitdiff
path: root/gnome-base/gdm/files/gdm-49.2-XDG_SESSION_EXTRA_DEVICE_ACCESS.patch
blob: 48dfa86ea2bee67f15d744683740b7d82c2e1be7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
From 3b9c7376c22816e9adae936f6831b1255aa5aae7 Mon Sep 17 00:00:00 2001
From: Alessandro Astone <alessandro.astone@canonical.com>
Date: Wed, 26 Nov 2025 16:07:00 +0100
Subject: [PATCH] gdm-session-worker: Set XDG_SESSION_EXTRA_DEVICE_ACCESS

Graphical-remote sessions may not have access to GPU rendering nodes
because
that is usually associated with a seat. Some distributions set
permission 666
on render nodes, while others like Debian and Ubuntu prefer not to.

XDG_SESSION_EXTRA_DEVICE_ACCESS is being introduced in systemd to
support
the use-case of granting sessions extra device access.

Set XDG_SESSION_EXTRA_DEVICE_ACCESS=render to gain access to DRM render
nodes
tagged as `xaccess-render` in udev.
Also set XDG_SESSION_EXTRA_DEVICE_ACCESS=accel to gain acces to NPU
nodes
tagged as `xaccess-accel` in uev.

This also applies to physical sessions where the user will now retain
access
to these devices even after the session goes in the background.

* https://github.com/systemd/systemd/pull/38516
* https://github.com/systemd/systemd/pull/40645

Closes: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/issues/224
---
 daemon/gdm-session-worker.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index fc49ba2ba..ac6bf69e3 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -1242,6 +1242,9 @@ gdm_session_worker_initialize_pam (GdmSessionWorker   *worker,
                 }
         }
 
+        /* Grant extra access to GPUs and NPUs (i.e. for remote sessions without a seat) */
+        gdm_session_worker_set_environment_variable (worker, "XDG_SESSION_EXTRA_DEVICE_ACCESS", "render:accel");
+
         /* set seat ID */
         if (seat_id != NULL && seat_id[0] != '\0') {
                 gdm_session_worker_set_environment_variable (worker, "XDG_SEAT", seat_id);
-- 
GitLab