summaryrefslogtreecommitdiff
path: root/user/bolt/wakeup.patch
blob: a10d420c454745dacf37b5780e7ac56b79869b02 (plain) (blame)
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
From ea3e3e30eb3ce76f6a0ae816a0f35809872f4edf Mon Sep 17 00:00:00 2001
From: Christian Kellner <christian@kellner.me>
Date: Mon, 13 Jan 2020 17:38:47 +0100
Subject: [PATCH] manager: ignore wakeup device uevents for probing

The probing detection code should ignore wakeup device uevents
because these virtual devices can be added (and removed) without
and correspondence to any physical thunderbolt device (un-)plug
events.
---
 boltd/bolt-manager.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/boltd/bolt-manager.c b/boltd/bolt-manager.c
index 877c008..c8b60da 100644
--- a/boltd/bolt-manager.c
+++ b/boltd/bolt-manager.c
@@ -2043,6 +2043,16 @@ device_is_thunderbolt_root (struct udev_device *dev)
          bolt_streq (driver, "thunderbolt");
 }
 
+static gboolean
+device_is_wakeup (struct udev_device *dev)
+{
+  const char *subsys;
+
+  subsys = udev_device_get_subsystem (dev);
+
+  return bolt_streq (subsys, "wakeup");
+}
+
 static gboolean
 probing_add_root (BoltManager        *mgr,
                   struct udev_device *dev)
@@ -2080,6 +2090,12 @@ manager_probing_device_added (BoltManager        *mgr,
   if (syspath == NULL)
     return;
 
+  /* ignore events for wakeup devices which get removed
+   * and added at random time without any connection to
+   * any physical thunderbolt device */
+  if (device_is_wakeup (dev))
+    return;
+
   roots = mgr->probing_roots;
   for (guint i = 0; i < roots->len; i++)
     {
-- 
2.24.1