All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Clark <robdclark@gmail.com>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Alex Deucher <alexander.deucher@amd.com>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 2/2] drm/probe-helper: clamp unknown connector status in the poll work
Date: Wed, 21 Jan 2015 16:43:04 -0500	[thread overview]
Message-ID: <CAF6AEGtgxarVfqNge-Lwh8XuBzb_tCuwt+PN8SdCVF-mqH2NGg@mail.gmail.com> (raw)
In-Reply-To: <1421826322-7592-2-git-send-email-daniel.vetter@ffwll.ch>

On Wed, Jan 21, 2015 at 2:45 AM, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> On some chipset we try to avoid possibly invasive output detection
> methods (like load detect which can cause flickering elsewhere) in the
> output poll work. Drivers could hence return unknown when a previous
> full ->detect call returned a different state.
>
> This change will generate a hotplug event, forcing userspace to do a
> full scan. This in turn updates the connector->status field so that we
> will _again_ get a state change when the hotplug work re-runs in 10
> seconds.
>
> To avoid this ping-pong loop detect this situation and clamp the
> connector state to the old value.
>
> Patch is inspired by a patch from Knut Peterson. Knut's patch
> completely ignored connector state changes if either the old or new
> status was unknown, which seemed to be a bit too agressive to me.
>
> v2: Rebased onto the drm_probe_helper.c extraction.
>
> References: http://lists.freedesktop.org/archives/dri-devel/2012-August/025975.html
> Cc: Knut Petersen <Knut_Petersen@t-online.de>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
> Cc: Rob Clark <robdclark@gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Reviewed-by: Rob Clark <robdclark@gmail.com>

> ---
>  drivers/gpu/drm/drm_probe_helper.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> index be9eca7f41d2..776a48c5de74 100644
> --- a/drivers/gpu/drm/drm_probe_helper.c
> +++ b/drivers/gpu/drm/drm_probe_helper.c
> @@ -334,6 +334,24 @@ static void output_poll_execute(struct work_struct *work)
>                 if (old_status != connector->status) {
>                         const char *old, *new;
>
> +                       /*
> +                        * The poll work sets force=false when calling detect so
> +                        * that drivers can avoid to do disruptive tests (e.g.
> +                        * when load detect cycles could cause flickering on
> +                        * other, running displays). This bears the risk that we
> +                        * flip-flop between unknown here in the poll work and
> +                        * the real state when userspace forces a full detect
> +                        * call after receiving a hotplug event due to this
> +                        * change.
> +                        *
> +                        * Hence clamp an unknown detect status to the old
> +                        * value.
> +                        */
> +                       if (connector->status == connector_status_unknown) {
> +                               connector->status = old_status;
> +                               continue;
> +                       }
> +
>                         old = drm_get_connector_status_name(old_status);
>                         new = drm_get_connector_status_name(connector->status);
>
> --
> 2.1.4
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-01-21 21:43 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-21  7:45 [PATCH 1/2] drm/probe-helper: don't lose hotplug event Daniel Vetter
2015-01-21  7:45 ` [PATCH 2/2] drm/probe-helper: clamp unknown connector status in the poll work Daniel Vetter
2015-01-21 21:43   ` Rob Clark [this message]
2015-01-22 14:44   ` shuang.he
2015-01-21 14:41 ` [PATCH] drm/probe-helper: don't lose hotplug event Daniel Vetter
2015-01-21 21:40   ` Rob Clark
2015-01-25 17:37     ` Rob Clark
2015-01-26  7:06       ` Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAF6AEGtgxarVfqNge-Lwh8XuBzb_tCuwt+PN8SdCVF-mqH2NGg@mail.gmail.com \
    --to=robdclark@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.