All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: dri-devel@lists.freedesktop.org
Cc: John Stultz <john.stultz@linaro.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Wolfram Sang <wsa+renesas@sang-engineering.com>
Subject: Re: [PATCH 2/5 v3] drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event()
Date: Mon, 16 Jan 2017 17:56:29 +0200	[thread overview]
Message-ID: <7359021.xs7IcXVQ9z@avalon> (raw)
In-Reply-To: <2543020.qSshgutoB3@avalon>

On Monday 16 Jan 2017 17:47:46 Laurent Pinchart wrote:
> Hi John,
> 
> Thank you for the patch.
> 
> On Tuesday 03 Jan 2017 11:41:39 John Stultz wrote:
> > In chasing down a previous issue with EDID probing from calling
> > drm_helper_hpd_irq_event() from irq context, Laurent noticed
> > that the DRM documentation suggests that
> > drm_kms_helper_hotplug_event() should be used instead.
> > 
> > Thus this patch replaces drm_helper_hpd_irq_event() with
> > drm_kms_helper_hotplug_event(), which requires we update the
> > connector.status entry and only call _hotplug_event() when the
> > status changes.
> > 
> > Cc: David Airlie <airlied@linux.ie>
> > Cc: Archit Taneja <architt@codeaurora.org>
> > Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
> > Cc: Lars-Peter Clausen <lars@metafoo.de>
> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > Cc: dri-devel@lists.freedesktop.org
> > Signed-off-by: John Stultz <john.stultz@linaro.org>
> > ---
> > v3: Update connector.status value and only call __hotplug_event()
> > 
> >     when that status changes, as suggested by Laurent.
> >  
> >  drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 16 +++++++++++++++-
> >  1 file changed, 15 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> > b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c index 4fcea44..d93d66f
> > 100644
> > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> > @@ -405,8 +405,22 @@ static bool adv7511_hpd(struct adv7511 *adv7511)
> > 
> >  static void adv7511_hpd_work(struct work_struct *work)
> >  {
> >  
> >  	struct adv7511 *adv7511 = container_of(work, struct adv7511,
> 
> hpd_work);
> 
> > +	enum drm_connector_status status;
> > +	unsigned int val;
> > +	int ret;
> > +
> > +	ret = regmap_read(adv7511->regmap, ADV7511_REG_STATUS, &val);
> > +	if (ret < 0)
> > +		status = connector_status_disconnected;
> > +	else if (val & ADV7511_STATUS_HPD)
> > +		status = connector_status_connected;
> > +	else
> > +		status = connector_status_disconnected;
> > +
> > +	if (adv7511->connector.status != status)
> > +		drm_kms_helper_hotplug_event(adv7511->connector.dev);
> > 
> > -	drm_helper_hpd_irq_event(adv7511->connector.dev);
> > +	adv7511->connector.status = status;
> 
> Shouldn't you update the status before calling
> drm_kms_helper_hotplug_event() ? Doing it after not only creates a small
> race condition as
> drm_kms_helper_hotplug_event() sends an event to userspace that could result
> in an ioctl call to retrieve the status, but the status is also checked by
> drm_setup_crtcs() called by drm_fb_helper_hotplug_event().

With

        if (adv7511->connector.status != status) {
                adv7511->connector.status = status;
                drm_kms_helper_hotplug_event(adv7511->connector.dev);
        }

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> >  }
> >  
> >  static int adv7511_irq_process(struct adv7511 *adv7511, bool process_hpd)

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2017-01-16 15:56 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-03 19:41 [PATCH 0/5 v3] adv7511 EDID probing improvements John Stultz
2017-01-03 19:41 ` [PATCH 1/5 v3] drm/bridge: adv7511: Use work_struct to defer hotplug handing to out of irq context John Stultz
2017-01-03 19:41   ` John Stultz
2017-01-03 19:41 ` [PATCH 2/5 v3] drm/bridge: adv7511: Switch to using drm_kms_helper_hotplug_event() John Stultz
2017-01-03 19:41   ` John Stultz
2017-01-16 15:47   ` Laurent Pinchart
2017-01-16 15:56     ` Laurent Pinchart [this message]
2017-01-16 19:31       ` John Stultz
2017-01-03 19:41 ` [PATCH 3/5 v3] drm/bridge: adv7511: Enable HPD interrupts to support hotplug and improve monitor detection John Stultz
2017-01-03 19:41 ` [PATCH 4/5 v3] drm/bridge: adv7511: Rework adv7511_power_on/off() so they can be reused internally John Stultz
2017-01-03 19:41   ` John Stultz
2017-01-16 15:50   ` Laurent Pinchart
2017-01-16 15:50     ` Laurent Pinchart
2017-01-03 19:41 ` [PATCH 5/5 v3] drm/bridge: adv7511: Reuse __adv7511_power_on/off() when probing EDID John Stultz
2017-01-16 16:03   ` Laurent Pinchart
2017-01-16 16:03     ` Laurent Pinchart
2017-01-16 20:14     ` John Stultz
2017-01-16 20:14       ` John Stultz
2017-01-16 22:25       ` Laurent Pinchart
2017-01-16 22:25         ` Laurent Pinchart
2017-01-16 23:16         ` [RFC][PATCH] drm/bridge: adv7511: Re-write the i2c address as it may have been lost John Stultz
2017-01-16 23:16           ` John Stultz
2017-01-16 23:36           ` Laurent Pinchart
2017-01-16 23:39             ` John Stultz
2017-01-11  8:48 ` [PATCH 0/5 v3] adv7511 EDID probing improvements Archit Taneja
2017-01-12  0:06   ` John Stultz
2017-01-12  0:06     ` John Stultz
2017-01-12  4:22     ` Archit Taneja
2017-01-16 15:57 ` Laurent Pinchart
2017-01-16 15:57   ` Laurent Pinchart

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=7359021.xs7IcXVQ9z@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=john.stultz@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wsa+renesas@sang-engineering.com \
    /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.