diff mbox series

[04/14] drm/i915: Only skip connector output for disable_display

Message ID 20180812223642.24865-4-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series [01/14] drm/i915: Cleanup gt powerstate from gem | expand

Commit Message

Chris Wilson Aug. 12, 2018, 10:36 p.m. UTC
We want to add no connectors, encoders or crtcs if the display is
disabled, but we still need to hook up any existing HW so that we can
power it down.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_display.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Imre Deak Aug. 15, 2018, 8:04 p.m. UTC | #1
On Sun, Aug 12, 2018 at 11:36:32PM +0100, Chris Wilson wrote:
> We want to add no connectors, encoders or crtcs if the display is
> disabled, but we still need to hook up any existing HW so that we can
> power it down.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

Yes, otherwise the dependent power domains are not claimed either and so
we'd (normally) disable power wells with active outputs, which is wrong.
Odd that it leads to system hang only on BSW (after the set_init_power
refactoring).

As you pointed out currently the refleak caused by the
intel_display_set_init_power() logic hides this problem (we don't ever
call intel_display_set_init_power(false) if i915.disable_display=1).

Reviewed-by: Imre Deak <imre.deak@intel.com>

> ---
>  drivers/gpu/drm/i915/intel_display.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index cc3f21ddae9c..dbf3d80353b1 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -14128,6 +14128,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  
>  	intel_pps_init(dev_priv);
>  
> +	if (INTEL_INFO(dev_priv)->num_pipes == 0)
> +		return;
> +
>  	/*
>  	 * intel_edp_init_connector() depends on this completing first, to
>  	 * prevent the registeration of both eDP and LVDS and the incorrect
> @@ -15206,9 +15209,6 @@ int intel_modeset_init(struct drm_device *dev)
>  
>  	intel_init_pm(dev_priv);
>  
> -	if (INTEL_INFO(dev_priv)->num_pipes == 0)
> -		return 0;
> -
>  	/*
>  	 * There may be no VBT; and if the BIOS enabled SSC we can
>  	 * just keep using it to avoid unnecessary flicker.  Whereas if the
> -- 
> 2.18.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index cc3f21ddae9c..dbf3d80353b1 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14128,6 +14128,9 @@  static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 	intel_pps_init(dev_priv);
 
+	if (INTEL_INFO(dev_priv)->num_pipes == 0)
+		return;
+
 	/*
 	 * intel_edp_init_connector() depends on this completing first, to
 	 * prevent the registeration of both eDP and LVDS and the incorrect
@@ -15206,9 +15209,6 @@  int intel_modeset_init(struct drm_device *dev)
 
 	intel_init_pm(dev_priv);
 
-	if (INTEL_INFO(dev_priv)->num_pipes == 0)
-		return 0;
-
 	/*
 	 * There may be no VBT; and if the BIOS enabled SSC we can
 	 * just keep using it to avoid unnecessary flicker.  Whereas if the