All of lore.kernel.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: Paulo Zanoni <przanoni@gmail.com>
Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: Re: [PATCH 1/2] drm/i915: kill intel_resume_prepare()
Date: Tue, 28 Oct 2014 15:12:15 +0200	[thread overview]
Message-ID: <1414501935.8635.16.camel@intelbox> (raw)
In-Reply-To: <1414439673-1994-1-git-send-email-przanoni@gmail.com>

On Mon, 2014-10-27 at 17:54 -0200, Paulo Zanoni wrote:
> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
> 
> Because, really, the abstraction is not working for us. It is nice for
> VLV, but doesn't add anything useful on SNB/HSW/BDW. We want to change
> this code due to a recently-discovered bug, but we can't seem to find
> a nice solution that repects the current abstraction. So let's kill
> intel_resume_prepare() and its friends, and add an equivalent
> implementation to both its callers.
> 
> Also, look at the diffstat!

The reason for intel_resume_prepare() and intel_suspend_complete() was
to contain platform dependent code in those and to share parts between
the system and runtime suspend code, see the discussion at [1]. I still
think this is a good idea, but I admit we need to work on it more, by
sharing more between the two paths. So for example instead of doing this
revert now I would consider calling intel_uncore_early_sanitize() for
both system and runtime resume.

But if that's not feasible and you want to go ahead with the removal
then please also remove intel_suspend_complete(), leaving it in would be
confusing imo.

--Imre

[1] 
http://lists.freedesktop.org/archives/intel-gfx/2014-August/050036.html

> 
> v2: - Rebase.
> 
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.c | 63 ++++++++++-------------------------------
>  1 file changed, 15 insertions(+), 48 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 035ec94..33b6fc4 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -551,8 +551,8 @@ static void intel_suspend_encoders(struct drm_i915_private *dev_priv)
>  }
>  
>  static int intel_suspend_complete(struct drm_i915_private *dev_priv);
> -static int intel_resume_prepare(struct drm_i915_private *dev_priv,
> -				bool rpm_resume);
> +static int vlv_resume_prepare(struct drm_i915_private *dev_priv,
> +			      bool rpm_resume);
>  
>  static int i915_drm_suspend(struct drm_device *dev)
>  {
> @@ -744,7 +744,7 @@ static int i915_drm_resume(struct drm_device *dev)
>  static int i915_drm_resume_early(struct drm_device *dev)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> -	int ret;
> +	int ret = 0;
>  
>  	/*
>  	 * We have a resume ordering issue with the snd-hda driver also
> @@ -760,7 +760,10 @@ static int i915_drm_resume_early(struct drm_device *dev)
>  
>  	pci_set_master(dev->pdev);
>  
> -	ret = intel_resume_prepare(dev_priv, false);
> +	if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
> +		hsw_disable_pc8(dev_priv);
> +	else if (IS_VALLEYVIEW(dev_priv))
> +		ret = vlv_resume_prepare(dev_priv, false);
>  	if (ret)
>  		DRM_ERROR("Resume prepare failed: %d,Continuing resume\n", ret);
>  
> @@ -986,25 +989,6 @@ static int hsw_suspend_complete(struct drm_i915_private *dev_priv)
>  	return 0;
>  }
>  
> -static int snb_resume_prepare(struct drm_i915_private *dev_priv,
> -				bool rpm_resume)
> -{
> -	struct drm_device *dev = dev_priv->dev;
> -
> -	if (rpm_resume)
> -		intel_init_pch_refclk(dev);
> -
> -	return 0;
> -}
> -
> -static int hsw_resume_prepare(struct drm_i915_private *dev_priv,
> -				bool rpm_resume)
> -{
> -	hsw_disable_pc8(dev_priv);
> -
> -	return 0;
> -}
> -
>  /*
>   * Save all Gunit registers that may be lost after a D3 and a subsequent
>   * S0i[R123] transition. The list of registers needing a save/restore is
> @@ -1462,7 +1446,7 @@ static int intel_runtime_resume(struct device *device)
>  	struct pci_dev *pdev = to_pci_dev(device);
>  	struct drm_device *dev = pci_get_drvdata(pdev);
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> -	int ret;
> +	int ret = 0;
>  
>  	if (WARN_ON_ONCE(!HAS_RUNTIME_PM(dev)))
>  		return -ENODEV;
> @@ -1472,7 +1456,13 @@ static int intel_runtime_resume(struct device *device)
>  	intel_opregion_notify_adapter(dev, PCI_D0);
>  	dev_priv->pm.suspended = false;
>  
> -	ret = intel_resume_prepare(dev_priv, true);
> +	if (IS_GEN6(dev_priv))
> +		intel_init_pch_refclk(dev);
> +	else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
> +		hsw_disable_pc8(dev_priv);
> +	else if (IS_VALLEYVIEW(dev_priv))
> +		ret = vlv_resume_prepare(dev_priv, true);
> +
>  	/*
>  	 * No point of rolling back things in case of an error, as the best
>  	 * we can do is to hope that things will still work (and disable RPM).
> @@ -1510,29 +1500,6 @@ static int intel_suspend_complete(struct drm_i915_private *dev_priv)
>  	return ret;
>  }
>  
> -/*
> - * This function implements common functionality of runtime and system
> - * resume sequence. Variable rpm_resume used for implementing different
> - * code paths.
> - */
> -static int intel_resume_prepare(struct drm_i915_private *dev_priv,
> -				bool rpm_resume)
> -{
> -	struct drm_device *dev = dev_priv->dev;
> -	int ret;
> -
> -	if (IS_GEN6(dev))
> -		ret = snb_resume_prepare(dev_priv, rpm_resume);
> -	else if (IS_HASWELL(dev) || IS_BROADWELL(dev))
> -		ret = hsw_resume_prepare(dev_priv, rpm_resume);
> -	else if (IS_VALLEYVIEW(dev))
> -		ret = vlv_resume_prepare(dev_priv, rpm_resume);
> -	else
> -		ret = 0;
> -
> -	return ret;
> -}
> -
>  static const struct dev_pm_ops i915_pm_ops = {
>  	/*
>  	 * S0ix (via system suspend) and S3 event handlers [PMSG_SUSPEND,


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2014-10-28 13:12 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-17 19:01 [PATCH] drm/i915: run intel_uncore_early_sanitize earlier on resume on non-VLV Paulo Zanoni
2014-10-20 10:20 ` Imre Deak
2014-10-21 17:05   ` Daniel Vetter
2014-10-22 11:20     ` Imre Deak
2014-10-22 19:01       ` Paulo Zanoni
2014-10-23 10:56         ` [PATCH 1/2] drm/i915: kill intel_resume_prepare() Paulo Zanoni
2014-10-23 10:56           ` [PATCH 2/2] drm/i915: run hsw_disable_pc8() later on resume Paulo Zanoni
2014-10-23 12:13             ` Daniel Vetter
2014-10-27 19:54               ` [PATCH 1/2] drm/i915: kill intel_resume_prepare() Paulo Zanoni
2014-10-27 19:54                 ` [PATCH 2/2] drm/i915: run hsw_disable_pc8() later on resume Paulo Zanoni
2014-10-28 13:12                 ` Imre Deak [this message]
2014-10-28 13:43                   ` [PATCH 1/2] drm/i915: kill intel_resume_prepare() Paulo Zanoni
2014-10-28 14:47                     ` Imre Deak
2014-11-03 11:13                       ` Daniel Vetter
2014-10-23 12:16         ` [PATCH] drm/i915: run intel_uncore_early_sanitize earlier on resume on non-VLV 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=1414501935.8635.16.camel@intelbox \
    --to=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@intel.com \
    --cc=przanoni@gmail.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.