diff options
author | Lyude Paul <lyude@redhat.com> | 2017-01-12 02:25:24 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-06-17 04:41:54 (GMT) |
commit | c7a29cf6c34a7873eb8e92b9a60b1a863ea72f6d (patch) | |
tree | 687ceedad005d910ea5d8d82f455e813da2e5f86 /kernel/sys.c | |
parent | d2beb1a9dd824bcf442e025cbf7fd1e3b4cf8db2 (diff) | |
download | linux-c7a29cf6c34a7873eb8e92b9a60b1a863ea72f6d.tar.xz |
drm/nouveau: Handle fbcon suspend/resume in seperate worker
[ Upstream commit 15266ae38fe09dae07bd8812cb7a7717b1e1d992 ]
Resuming from RPM can happen while already holding
dev->mode_config.mutex. This means we can't actually handle fbcon in
any RPM resume workers, since restoring fbcon requires grabbing
dev->mode_config.mutex again. So move the fbcon suspend/resume code into
it's own worker, and rely on that instead to avoid deadlocking.
This fixes more deadlocks for runtime suspending the GPU on the ThinkPad
W541. Reproduction recipe:
- Get a machine with both optimus and a nvidia card with connectors
attached to it
- Wait for the nvidia GPU to suspend
- Attempt to manually reprobe any of the connectors on the nvidia GPU
using sysfs
- *deadlock*
[airlied: use READ_ONCE to address Hans's comment]
Signed-off-by: Lyude <lyude@redhat.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Kilian Singer <kilian.singer@quantumtechnology.info>
Cc: Lukas Wunner <lukas@wunner.de>
Cc: David Airlie <airlied@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/sys.c')
0 files changed, 0 insertions, 0 deletions