diff options
author | 2019-07-05 12:10:10 +0000 | |
---|---|---|
committer | 2019-07-05 12:10:10 +0000 | |
commit | ae8374b9171f55e4b2456a89c96c72574d7dfca7 (patch) | |
tree | 8ebec2fbf2c34176b81243b8e26e83086261e429 /sys/dev/pci/drm/drm_linux.c | |
parent | Fix manual openssl(1) dgst (diff) | |
download | wireguard-openbsd-ae8374b9171f55e4b2456a89c96c72574d7dfca7.tar.xz wireguard-openbsd-ae8374b9171f55e4b2456a89c96c72574d7dfca7.zip |
Use multi-threaded task queues to prevent deadlocks in the case where a
tasks sleeps and expects to be woken up by a task that will be submitted
to the same task queue. That scenario happens in the output hotplug code.
We probably should spend some time on tuning the number of threads but
let's make things work correctly first.
Based on some serious debugging done by Sven M. Hallberg.
ok jsg@
Diffstat (limited to 'sys/dev/pci/drm/drm_linux.c')
-rw-r--r-- | sys/dev/pci/drm/drm_linux.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/dev/pci/drm/drm_linux.c b/sys/dev/pci/drm/drm_linux.c index 0b86912cb72..1c5405071ca 100644 --- a/sys/dev/pci/drm/drm_linux.c +++ b/sys/dev/pci/drm/drm_linux.c @@ -1,4 +1,4 @@ -/* $OpenBSD: drm_linux.c,v 1.38 2019/06/09 12:58:30 kettenis Exp $ */ +/* $OpenBSD: drm_linux.c,v 1.39 2019/07/05 12:10:10 kettenis Exp $ */ /* * Copyright (c) 2013 Jonathan Gray <jsg@openbsd.org> * Copyright (c) 2015, 2016 Mark Kettenis <kettenis@openbsd.org> @@ -1399,15 +1399,15 @@ drm_linux_init(void) { if (system_wq == NULL) { system_wq = (struct workqueue_struct *) - taskq_create("drmwq", 1, IPL_HIGH, 0); + taskq_create("drmwq", 4, IPL_HIGH, 0); } if (system_unbound_wq == NULL) { system_unbound_wq = (struct workqueue_struct *) - taskq_create("drmubwq", 1, IPL_HIGH, 0); + taskq_create("drmubwq", 4, IPL_HIGH, 0); } if (system_long_wq == NULL) { system_long_wq = (struct workqueue_struct *) - taskq_create("drmlwq", 1, IPL_HIGH, 0); + taskq_create("drmlwq", 4, IPL_HIGH, 0); } if (taskletq == NULL) |