From 1fe7841d892925aff10c3b070937e974d7835d2b Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 6 Dec 2016 11:37:15 +0000 Subject: [PATCH] drm: Don't block the kworker waiting for mode_config.mutex in output_poll() If we cannot acquire the mode_config.mutex immediately, just back off and queue a new attempt after the poll interval. This is mostly to stop the hung task spam when the system is deadlocked, but it will also lessen the load (in such extreme cases). Signed-off-by: Chris Wilson Reviewed-by: Eric Engestrom [danvet:s/lock/mutex/ per Eric's comment.] Signed-off-by: Daniel Vetter Link: http://patchwork.freedesktop.org/patch/msgid/20161206113715.30382-1-chris@chris-wilson.co.uk --- drivers/gpu/drm/drm_probe_helper.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 078d9703a4fe..ac953f037be7 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -392,7 +392,11 @@ static void output_poll_execute(struct work_struct *work) if (!drm_kms_helper_poll) goto out; - mutex_lock(&dev->mode_config.mutex); + if (!mutex_trylock(&dev->mode_config.mutex)) { + repoll = true; + goto out; + } + drm_for_each_connector(connector, dev) { /* Ignore forced connectors. */ -- 2.20.1