All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>,
	Mike Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@codeaurora.org>,
	David Airlie <airlied@linux.ie>,
	Thierry Reding <thierry.reding@gmail.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linux-sunxi@googlegroups.com,
	Chen-Yu Tsai <wens@csie.org>, Hans de Goede <hdegoede@redhat.com>,
	Alexander Kaplan <alex@nextthing.co>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	Wynter Woods <wynter@nextthing.co>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Rob Clark <robdclark@gmail.com>
Subject: Re: [PATCH v2 13/26] drm/fb_cma_helper: Remove implicit call to disable_unused_functions
Date: Mon, 25 Jan 2016 21:02:14 +0200	[thread overview]
Message-ID: <4816141.nXxRuEqaX5@avalon> (raw)
In-Reply-To: <20160125072938.GI11240@phenom.ffwll.local>

Hi Daniel,

On Monday 25 January 2016 08:29:38 Daniel Vetter wrote:
> On Mon, Jan 25, 2016 at 12:19:27AM +0200, Laurent Pinchart wrote:
> > On Friday 15 January 2016 11:17:30 Daniel Vetter wrote:
> >> On Fri, Jan 15, 2016 at 01:13:05AM +0200, Laurent Pinchart wrote:
> >>> On Thursday 14 January 2016 16:24:56 Maxime Ripard wrote:
> >>>> The drm_fbdev_cma_init function always calls the
> >>>> drm_helper_disable_unused_functions. Since it's part of the usual
> >>>> probe process, all the drivers using that helper will end up having
> >>>> their encoder and CRTC disable functions called at probe if their
> >>>> device has not been reported as enabled.
> >>>> 
> >>>> This could be fixed by reading out from the registers the current
> >>>> state of the device if it is enabled, but even that will not handle
> >>>> the case where the device is actually disabled.
> >>>> 
> >>>> Moreover, the drivers using the atomic modesetting expect that their
> >>>> enable and disable callback to be called when the device is already
> >>>> enabled or disabled (respectively).
> >>>> 
> >>>> We can however fix this issue by moving the call to
> >>>> drm_helper_disable_unused_functions out of drm_fbdev_cma_init and
> >>>> make the drivers needing it (all the drivers calling
> >>>> drm_fbdev_cma_init and not using the atomic modesetting) explicitly
> >>>> call it.
> >>> 
> >>> I'd rather add it to all drivers that call drm_fbdev_cma_init(). All
> >>> the atomic ones must have special code to cope with it that could be
> >>> rendered useless by the removal of the
> >>> drm_helper_disable_unused_functions() call. That code should be
> >>> removed too, and it would be easier to check drivers one by one and
> >>> fixing them individually (outside of this patch series, unless you
> >>> insist ;-)) when removing the explicit
> >>> drm_helper_disable_unused_functions() call.
> >> 
> >> I had the same thought, but figured there's really no good reason ever
> >> to do this. I suspect most of that disable_unused_function stuff we have
> >> all over is supreme cargo-cult anyway ;-)
> > 
> > I'm not sure you got my point. Yes, the
> > drm_helper_disable_unused_functions() call should be removed from atomic
> > drivers, but that will leave support code added for the sole reason of
> > avoiding the crash in the drivers. That code will likely not be noticed
> > and will stay there rotting. If we added
> > drm_helper_disable_unused_functions() calls to all atomic drivers then
> > driver authors will hopefully check carefully if there's any support code
> > that can be removed when removing the function call. It would act as a
> > kind of FIXME reminder.
> 
> drm_helper_disable_unused_functions() already prefers the ->disable
> callbacks over dpms, like atomic helpers. I don't think there's any dead
> code due to this change. The problem was that driver/hw blew up since it
> was disabled when the hw was off already.

The rcar-du-drm driver keeps an internal CRTC enabled state for just this 
purpose. I expect other drivers to implement something similar that can be 
removed after dropping the drm_helper_disable_unused_functions() calls.

-- 
Regards,

Laurent Pinchart

WARNING: multiple messages have this Message-ID (diff)
From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 13/26] drm/fb_cma_helper: Remove implicit call to disable_unused_functions
Date: Mon, 25 Jan 2016 21:02:14 +0200	[thread overview]
Message-ID: <4816141.nXxRuEqaX5@avalon> (raw)
In-Reply-To: <20160125072938.GI11240@phenom.ffwll.local>

Hi Daniel,

On Monday 25 January 2016 08:29:38 Daniel Vetter wrote:
> On Mon, Jan 25, 2016 at 12:19:27AM +0200, Laurent Pinchart wrote:
> > On Friday 15 January 2016 11:17:30 Daniel Vetter wrote:
> >> On Fri, Jan 15, 2016 at 01:13:05AM +0200, Laurent Pinchart wrote:
> >>> On Thursday 14 January 2016 16:24:56 Maxime Ripard wrote:
> >>>> The drm_fbdev_cma_init function always calls the
> >>>> drm_helper_disable_unused_functions. Since it's part of the usual
> >>>> probe process, all the drivers using that helper will end up having
> >>>> their encoder and CRTC disable functions called at probe if their
> >>>> device has not been reported as enabled.
> >>>> 
> >>>> This could be fixed by reading out from the registers the current
> >>>> state of the device if it is enabled, but even that will not handle
> >>>> the case where the device is actually disabled.
> >>>> 
> >>>> Moreover, the drivers using the atomic modesetting expect that their
> >>>> enable and disable callback to be called when the device is already
> >>>> enabled or disabled (respectively).
> >>>> 
> >>>> We can however fix this issue by moving the call to
> >>>> drm_helper_disable_unused_functions out of drm_fbdev_cma_init and
> >>>> make the drivers needing it (all the drivers calling
> >>>> drm_fbdev_cma_init and not using the atomic modesetting) explicitly
> >>>> call it.
> >>> 
> >>> I'd rather add it to all drivers that call drm_fbdev_cma_init(). All
> >>> the atomic ones must have special code to cope with it that could be
> >>> rendered useless by the removal of the
> >>> drm_helper_disable_unused_functions() call. That code should be
> >>> removed too, and it would be easier to check drivers one by one and
> >>> fixing them individually (outside of this patch series, unless you
> >>> insist ;-)) when removing the explicit
> >>> drm_helper_disable_unused_functions() call.
> >> 
> >> I had the same thought, but figured there's really no good reason ever
> >> to do this. I suspect most of that disable_unused_function stuff we have
> >> all over is supreme cargo-cult anyway ;-)
> > 
> > I'm not sure you got my point. Yes, the
> > drm_helper_disable_unused_functions() call should be removed from atomic
> > drivers, but that will leave support code added for the sole reason of
> > avoiding the crash in the drivers. That code will likely not be noticed
> > and will stay there rotting. If we added
> > drm_helper_disable_unused_functions() calls to all atomic drivers then
> > driver authors will hopefully check carefully if there's any support code
> > that can be removed when removing the function call. It would act as a
> > kind of FIXME reminder.
> 
> drm_helper_disable_unused_functions() already prefers the ->disable
> callbacks over dpms, like atomic helpers. I don't think there's any dead
> code due to this change. The problem was that driver/hw blew up since it
> was disabled when the hw was off already.

The rcar-du-drm driver keeps an internal CRTC enabled state for just this 
purpose. I expect other drivers to implement something similar that can be 
removed after dropping the drm_helper_disable_unused_functions() calls.

-- 
Regards,

Laurent Pinchart

  parent reply	other threads:[~2016-01-25 19:02 UTC|newest]

Thread overview: 196+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-14 15:24 [PATCH v2 00/26] drm: Add Allwinner A10 display engine support Maxime Ripard
2016-01-14 15:24 ` Maxime Ripard
2016-01-14 15:24 ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 01/26] reset: Move DT cell size check to the core Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-15 15:50   ` Philipp Zabel
2016-01-15 15:50     ` Philipp Zabel
2016-01-15 15:50     ` Philipp Zabel
2016-01-14 15:24 ` [PATCH v2 02/26] reset: Make reset_control_ops const Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-15 15:50   ` Philipp Zabel
2016-01-15 15:50     ` Philipp Zabel
2016-01-15 15:50     ` Philipp Zabel
2016-01-14 15:24 ` [PATCH v2 03/26] clk: Add regmap support Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-28  7:56   ` Stephen Boyd
2016-01-28  7:56     ` Stephen Boyd
2016-01-28  7:56     ` Stephen Boyd
2016-01-14 15:24 ` [PATCH v2 04/26] clk: composite: Add unregister function Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 05/26] clk: sunxi: Add display and TCON0 clocks driver Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-15  3:01   ` Rob Herring
2016-01-15  3:01     ` Rob Herring
2016-01-15  3:01     ` Rob Herring
2016-01-16 14:08   ` [linux-sunxi] " Priit Laes
2016-01-16 14:08     ` Priit Laes
2016-01-16 14:08     ` [linux-sunxi] " Priit Laes
2016-01-16 15:29   ` Chen-Yu Tsai
2016-01-16 15:29     ` Chen-Yu Tsai
2016-01-16 15:29     ` Chen-Yu Tsai
2016-02-03 20:18     ` Maxime Ripard
2016-02-03 20:18       ` Maxime Ripard
2016-02-03 20:18       ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 06/26] clk: sunxi: Add PLL3 clock Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-15  3:02   ` Rob Herring
2016-01-15  3:02     ` Rob Herring
2016-01-15  3:02     ` Rob Herring
2016-01-16 16:05   ` Chen-Yu Tsai
2016-01-16 16:05     ` Chen-Yu Tsai
2016-01-16 16:05     ` Chen-Yu Tsai
2016-02-03 20:27     ` Maxime Ripard
2016-02-03 20:27       ` Maxime Ripard
2016-02-03 20:27       ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 07/26] clk: sunxi: Add TCON channel1 clock Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-15  3:03   ` Rob Herring
2016-01-15  3:03     ` Rob Herring
2016-01-15  3:03     ` Rob Herring
2016-01-16 16:36   ` Chen-Yu Tsai
2016-01-16 16:36     ` Chen-Yu Tsai
2016-01-16 16:36     ` Chen-Yu Tsai
2016-02-03 20:29     ` Maxime Ripard
2016-02-03 20:29       ` Maxime Ripard
2016-02-03 20:29       ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 08/26] clk: sun5i: add DRAM gates Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-15  3:04   ` Rob Herring
2016-01-15  3:04     ` Rob Herring
2016-01-15  3:04     ` Rob Herring
2016-01-14 15:24 ` [PATCH v2 09/26] ARM: sun5i: dt: Add pll3 and pll7 clocks Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 10/26] ARM: sun5i: a13: Add display and TCON clocks Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-16 17:06   ` Chen-Yu Tsai
2016-01-16 17:06     ` Chen-Yu Tsai
2016-01-16 17:06     ` Chen-Yu Tsai
2016-02-03 20:31     ` Maxime Ripard
2016-02-03 20:31       ` Maxime Ripard
2016-02-05  9:49       ` Chen-Yu Tsai
2016-02-05  9:49         ` Chen-Yu Tsai
2016-02-05  9:49         ` Chen-Yu Tsai
2016-01-14 15:24 ` [PATCH v2 11/26] ARM: sun5i: Add DRAM gates Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-16 17:10   ` Chen-Yu Tsai
2016-01-16 17:10     ` Chen-Yu Tsai
2016-01-16 17:10     ` Chen-Yu Tsai
2016-02-03 20:36     ` Maxime Ripard
2016-02-03 20:36       ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 12/26] ARM: sun5i: Add TV encoder gate to the DTSI Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-16 17:12   ` Chen-Yu Tsai
2016-01-16 17:12     ` Chen-Yu Tsai
2016-01-16 17:12     ` Chen-Yu Tsai
2016-01-14 15:24 ` [PATCH v2 13/26] drm/fb_cma_helper: Remove implicit call to disable_unused_functions Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 23:13   ` Laurent Pinchart
2016-01-14 23:13     ` Laurent Pinchart
2016-01-14 23:13     ` Laurent Pinchart
2016-01-15 10:17     ` Daniel Vetter
2016-01-15 10:17       ` Daniel Vetter
2016-01-15 10:17       ` Daniel Vetter
2016-01-24 22:19       ` Laurent Pinchart
2016-01-24 22:19       ` Laurent Pinchart
2016-01-24 22:19       ` Laurent Pinchart
2016-01-24 22:19         ` Laurent Pinchart
2016-01-25  7:29         ` Daniel Vetter
2016-01-25  7:29           ` Daniel Vetter
2016-01-25  7:29           ` Daniel Vetter
2016-01-25 19:02           ` Laurent Pinchart
2016-01-25 19:02           ` Laurent Pinchart
2016-01-25 19:02           ` Laurent Pinchart
2016-01-25 19:02           ` Laurent Pinchart [this message]
2016-01-25 19:02             ` Laurent Pinchart
     [not found]           ` <20160125072938.GI11240-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2016-01-25 19:02             ` Laurent Pinchart
2016-01-25 19:02           ` Laurent Pinchart
2016-01-24 22:19       ` Laurent Pinchart
2016-01-24 22:19       ` Laurent Pinchart
     [not found]       ` <20160115101730.GH19130-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2016-01-24 22:19         ` Laurent Pinchart
2016-01-14 15:24 ` [PATCH v2 14/26] drm/modes: Rewrite the command line parser Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 15/26] drm/modes: Support modes names on the command line Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24 ` [PATCH v2 16/26] drm: Add Allwinner A10 Display Engine support Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-14 15:24   ` Maxime Ripard
2016-01-16 15:11   ` [linux-sunxi] " Priit Laes
2016-01-16 15:11     ` Priit Laes
2016-01-16 15:11     ` [linux-sunxi] " Priit Laes
2016-01-17 12:58     ` Priit Laes
2016-01-17 12:58       ` Priit Laes
2016-01-17 12:58       ` Priit Laes
2016-01-19 15:38     ` Maxime Ripard
2016-01-19 15:38       ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 17/26] drm: sun4i: Add DT bindings documentation Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-15  3:15   ` Rob Herring
2016-01-15  3:15     ` Rob Herring
2016-01-15  3:15     ` Rob Herring
2016-02-03 19:59     ` Maxime Ripard
2016-02-03 19:59       ` Maxime Ripard
2016-02-03 19:59       ` Maxime Ripard
2016-02-03 20:19       ` Rob Herring
2016-02-03 20:19         ` Rob Herring
2016-02-03 20:19         ` Rob Herring
2016-02-03 20:47         ` Maxime Ripard
2016-02-03 20:47           ` Maxime Ripard
2016-02-03 20:47           ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 18/26] drm: sun4i: Add RGB output Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 19/26] drm: sun4i: Add composite output Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 20/26] drm: sun4i: tv: Add PAL output standard Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 21/26] drm: sun4i: tv: Add NTSC " Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 22/26] ARM: sun5i: r8: Add display blocks to the DTSI Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 23/26] ARM: sun5i: chip: Enable the TV Encoder Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 24/26] devicetree: Add olimex vendor prefix Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-15  3:15   ` Rob Herring
2016-01-15  3:15     ` Rob Herring
2016-01-15  3:15     ` Rob Herring
2016-01-15  6:41     ` Stefan Wahren
2016-01-15  6:41       ` Stefan Wahren
2016-01-15  8:05       ` Maxime Ripard
2016-01-15  8:05         ` Maxime Ripard
2016-01-15  8:05         ` Maxime Ripard
2016-01-14 15:25 ` [PATCH v2 25/26] drm/panel: simple: Add timings for the Olimex LCD-OLinuXino-4.3TS Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-15  3:17   ` Rob Herring
2016-01-15  3:17     ` Rob Herring
2016-01-15  3:17     ` Rob Herring
2016-01-14 15:25 ` [PATCH v2 26/26] DO NOT MERGE: ARM: sun5i: chip: Enable the LCD panel Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-01-14 15:25   ` Maxime Ripard
2016-02-20 13:45 ` [linux-sunxi] [PATCH v2 00/26] drm: Add Allwinner A10 display engine support Priit Laes
2016-02-20 13:45   ` Priit Laes
2016-02-20 13:45   ` [linux-sunxi] " Priit Laes

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=4816141.nXxRuEqaX5@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=airlied@linux.ie \
    --cc=alex@nextthing.co \
    --cc=boris.brezillon@free-electrons.com \
    --cc=daniel@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hdegoede@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=mturquette@baylibre.com \
    --cc=p.zabel@pengutronix.de \
    --cc=robdclark@gmail.com \
    --cc=sboyd@codeaurora.org \
    --cc=thierry.reding@gmail.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=wens@csie.org \
    --cc=wynter@nextthing.co \
    /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.