Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758705AbcLSJyT (ORCPT ); Mon, 19 Dec 2016 04:54:19 -0500 Received: from mga07.intel.com ([134.134.136.100]:19000 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758589AbcLSJyJ (ORCPT ); Mon, 19 Dec 2016 04:54:09 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,372,1477983600"; d="scan'208";a="799929844" From: Jani Nikula To: Daniel Vetter , Peter Ujfalusi Cc: daniel.vetter@ffwll.ch, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, "Tahvanainen\, Jari" Subject: Re: [PATCH v2] drm: drm_probe_helper: Fix output_poll_work scheduling In-Reply-To: <20160831112317.GC20761@phenom.ffwll.local> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20160831110905.31289-1-peter.ujfalusi@ti.com> <20160831112317.GC20761@phenom.ffwll.local> Date: Mon, 19 Dec 2016 11:54:05 +0200 Message-ID: <871sx4nt1e.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2742 Lines: 82 On Wed, 31 Aug 2016, Daniel Vetter wrote: > On Wed, Aug 31, 2016 at 02:09:05PM +0300, Peter Ujfalusi wrote: >> drm_kms_helper_poll_enable_locked() should check if we have delayed event >> pending and if we have, schedule the work to run without delay. >> >> Currently the output_poll_work is only scheduled if any of the connectors >> have DRM_CONNECTOR_POLL_CONNECT or DRM_CONNECTOR_POLL_DISCONNECT with >> DRM_OUTPUT_POLL_PERIOD delay. It does not matter if we have delayed event >> already registered to be handled. The detection will be delayd by >> DRM_OUTPUT_POLL_PERIOD in any case. >> Furthermore if none of the connectors are marked as POLL_CONNECT or >> POLL_DISCONNECT because all connectors are either POLL_HPD or they are >> always connected: the output_poll_work will not run at all even if we >> have delayed event marked. >> >> When none of the connectors require polling, their initial status change >> from unknown to connected/disconnected is not going to be handled until >> the first kms application starts or if we have fb console enabled. >> >> Signed-off-by: Peter Ujfalusi >> --- >> Hi, >> >> Changes since v1: >> - dropped the last paragraph from the commit message. > > I added a few more words to the commit message to explain when exactly > this is a problem and applied your patch to drm-misc. Hi Peter, sadly looks like this regresses users out there [1]. Seems to be a reliable bisect. We need to have this fixed or reverted. BR, Jani. [1] https://bugs.freedesktop.org/show_bug.cgi?id=98690 > > Thanks, Daniel >> >> Regards, >> Peter >> >> drivers/gpu/drm/drm_probe_helper.c | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c >> index a0df377d7d1c..f6b64d7d3528 100644 >> --- a/drivers/gpu/drm/drm_probe_helper.c >> +++ b/drivers/gpu/drm/drm_probe_helper.c >> @@ -129,6 +129,7 @@ void drm_kms_helper_poll_enable_locked(struct drm_device *dev) >> { >> bool poll = false; >> struct drm_connector *connector; >> + unsigned long delay = DRM_OUTPUT_POLL_PERIOD; >> >> WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); >> >> @@ -141,8 +142,13 @@ void drm_kms_helper_poll_enable_locked(struct drm_device *dev) >> poll = true; >> } >> >> + if (dev->mode_config.delayed_event) { >> + poll = true; >> + delay = 0; >> + } >> + >> if (poll) >> - schedule_delayed_work(&dev->mode_config.output_poll_work, DRM_OUTPUT_POLL_PERIOD); >> + schedule_delayed_work(&dev->mode_config.output_poll_work, delay); >> } >> EXPORT_SYMBOL(drm_kms_helper_poll_enable_locked); >> >> -- >> 2.9.3 >> -- Jani Nikula, Intel Open Source Technology Center