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 04/23] drm/i915: kill dev_priv->pc8.gpu_idle
Date: Fri, 28 Feb 2014 17:23:38 +0200 [thread overview]
Message-ID: <1393601018.3479.65.camel@intelbox> (raw)
In-Reply-To: <1393540010-1582-5-git-send-email-przanoni@gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 5800 bytes --]
On Thu, 2014-02-27 at 19:26 -0300, Paulo Zanoni wrote:
> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
> Since the addition of dev_priv->mm.busy, there's no more need for
> dev_priv->pc8.gpu_idle, so kill it.
>
> Notice that when you remove gpu_idle, hsw_package_c8_gpu_idle and
> hsw_package_c8_gpu_busy become identical to hsw_enable_package_c8 and
> hsw_disable_package_c8, so just use them.
>
> Also, when we boot the machine, dev_priv->mm.busy initially considers
> the machine as idle. This is opposed to dev_priv->pc8.gpu_idle, which
> considered it busy. So dev_priv->pc8.disable_count has to be
> initalized to 1 now.
>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
> ---
> drivers/gpu/drm/i915/i915_debugfs.c | 2 +-
> drivers/gpu/drm/i915/i915_drv.h | 10 ++++------
> drivers/gpu/drm/i915/intel_display.c | 30 ++----------------------------
> drivers/gpu/drm/i915/intel_pm.c | 3 +--
> 4 files changed, 8 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index d90a707..72cc6d0 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1997,7 +1997,7 @@ static int i915_pc8_status(struct seq_file *m, void *unused)
> mutex_lock(&dev_priv->pc8.lock);
> seq_printf(m, "Requirements met: %s\n",
> yesno(dev_priv->pc8.requirements_met));
> - seq_printf(m, "GPU idle: %s\n", yesno(dev_priv->pc8.gpu_idle));
> + seq_printf(m, "GPU idle: %s\n", yesno(!dev_priv->mm.busy));
> seq_printf(m, "Disable count: %d\n", dev_priv->pc8.disable_count);
> seq_printf(m, "IRQs disabled: %s\n",
> yesno(dev_priv->pc8.irqs_disabled));
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index a5caa7e..2a2a3a9 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1321,11 +1321,10 @@ struct ilk_wm_values {
> * Ideally every piece of our code that needs PC8+ disabled would call
> * hsw_disable_package_c8, which would increment disable_count and prevent the
> * system from reaching PC8+. But we don't have a symmetric way to do this for
> - * everything, so we have the requirements_met and gpu_idle variables. When we
> - * switch requirements_met or gpu_idle to true we decrease disable_count, and
> - * increase it in the opposite case. The requirements_met variable is true when
> - * all the CRTCs, encoders and the power well are disabled. The gpu_idle
> - * variable is true when the GPU is idle.
> + * everything, so we have the requirements_met variable. When we switch
> + * requirements_met to true we decrease disable_count, and increase it in the
> + * opposite case. The requirements_met variable is true when all the CRTCs,
> + * encoders and the power well are disabled.
> *
> * In addition to everything, we only actually enable PC8+ if disable_count
> * stays at zero for at least some seconds. This is implemented with the
> @@ -1348,7 +1347,6 @@ struct ilk_wm_values {
> */
> struct i915_package_c8 {
> bool requirements_met;
> - bool gpu_idle;
> bool irqs_disabled;
> /* Only true after the delayed work task actually enables it. */
> bool enabled;
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 10ec401..0183a34 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -6812,32 +6812,6 @@ done:
> mutex_unlock(&dev_priv->pc8.lock);
> }
>
> -static void hsw_package_c8_gpu_idle(struct drm_i915_private *dev_priv)
> -{
> - if (!HAS_PC8(dev_priv->dev))
> - return;
> -
> - mutex_lock(&dev_priv->pc8.lock);
> - if (!dev_priv->pc8.gpu_idle) {
> - dev_priv->pc8.gpu_idle = true;
> - __hsw_enable_package_c8(dev_priv);
> - }
> - mutex_unlock(&dev_priv->pc8.lock);
> -}
> -
> -static void hsw_package_c8_gpu_busy(struct drm_i915_private *dev_priv)
> -{
> - if (!HAS_PC8(dev_priv->dev))
> - return;
> -
> - mutex_lock(&dev_priv->pc8.lock);
> - if (dev_priv->pc8.gpu_idle) {
> - dev_priv->pc8.gpu_idle = false;
> - __hsw_disable_package_c8(dev_priv);
> - }
> - mutex_unlock(&dev_priv->pc8.lock);
> -}
> -
> #define for_each_power_domain(domain, mask) \
> for ((domain) = 0; (domain) < POWER_DOMAIN_NUM; (domain)++) \
> if ((1 << (domain)) & (mask))
> @@ -8195,7 +8169,7 @@ void intel_mark_busy(struct drm_device *dev)
> if (dev_priv->mm.busy)
> return;
>
> - hsw_package_c8_gpu_busy(dev_priv);
> + hsw_disable_package_c8(dev_priv);
> i915_update_gfx_val(dev_priv);
> dev_priv->mm.busy = true;
> }
> @@ -8224,7 +8198,7 @@ void intel_mark_idle(struct drm_device *dev)
> gen6_rps_idle(dev->dev_private);
>
> out:
> - hsw_package_c8_gpu_idle(dev_priv);
> + hsw_enable_package_c8(dev_priv);
> }
>
> void intel_mark_fb_busy(struct drm_i915_gem_object *obj,
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index a6b877a..50b80bb 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -5786,10 +5786,9 @@ void intel_pm_setup(struct drm_device *dev)
>
> mutex_init(&dev_priv->pc8.lock);
> dev_priv->pc8.requirements_met = false;
> - dev_priv->pc8.gpu_idle = false;
> dev_priv->pc8.irqs_disabled = false;
> dev_priv->pc8.enabled = false;
> - dev_priv->pc8.disable_count = 2; /* requirements_met + gpu_idle */
> + dev_priv->pc8.disable_count = 1; /* requirements_met */
> INIT_DELAYED_WORK(&dev_priv->pc8.enable_work, hsw_enable_pc8_work);
> INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work,
> intel_gen6_powersave_work);
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2014-02-28 15:23 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-27 22:26 [PATCH 00/23] Merge PC8 with runtime PM, v2 Paulo Zanoni
2014-02-27 22:26 ` [PATCH 01/23] drm/i915: Accurately track when we mark the hardware as idle/busy Paulo Zanoni
2014-02-27 22:26 ` [PATCH 02/23] drm/i915: put runtime PM only at the end of intel_mark_idle Paulo Zanoni
2014-02-27 22:26 ` [PATCH 03/23] drm/i915: put runtime PM only when we actually release force_wake Paulo Zanoni
2014-02-27 22:26 ` [PATCH 04/23] drm/i915: kill dev_priv->pc8.gpu_idle Paulo Zanoni
2014-02-28 15:23 ` Imre Deak [this message]
2014-02-27 22:26 ` [PATCH 05/23] drm/i915: rename modeset_update_power_wells Paulo Zanoni
2014-02-27 22:26 ` [PATCH 06/23] drm/i915: get/put runtime PM without holding rps.hw_lock Paulo Zanoni
2014-02-27 22:26 ` [PATCH 07/23] drm/i915: add forcewake functions that don't touch runtime PM Paulo Zanoni
2014-02-28 8:44 ` Chris Wilson
2014-02-28 19:38 ` Paulo Zanoni
2014-02-28 19:46 ` Chris Wilson
2014-03-05 16:56 ` Daniel Vetter
2014-02-27 22:26 ` [PATCH 08/23] drm/i915: extract __hsw_do_{en, dis}able_package_c8 Paulo Zanoni
2014-02-27 22:26 ` [PATCH 09/23] drm/i915: make PC8 be part of runtime PM suspend/resume Paulo Zanoni
2014-02-28 9:42 ` Chris Wilson
2014-03-06 22:48 ` Daniel Vetter
2014-02-27 22:26 ` [PATCH 10/23] drm/i915: get/put runtime PM when we get/put a power domain Paulo Zanoni
2014-02-28 15:45 ` Imre Deak
2014-02-28 19:54 ` Paulo Zanoni
2014-02-27 22:26 ` [PATCH 11/23] drm/i915: remove dev_priv->pc8.requirements_met Paulo Zanoni
2014-02-27 22:26 ` [PATCH 12/23] drm/i915: get runtime PM references when the GPU is idle/busy Paulo Zanoni
2014-02-28 17:08 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 13/23] drm/i915: kill pc8.disable_count Paulo Zanoni
2014-02-28 17:10 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 14/23] drm/i915: remove an indirection level on PC8 functions Paulo Zanoni
2014-02-28 17:11 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 15/23] drm/i915: don't get/put PC8 reference on freeze/thaw Paulo Zanoni
2014-02-28 17:11 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 16/23] drm/i915: get/put runtime PM references for GMBUS and DP AUX Paulo Zanoni
2014-02-28 17:13 ` Jesse Barnes
2014-02-28 17:38 ` Imre Deak
2014-02-28 17:55 ` Jesse Barnes
2014-02-28 18:20 ` Imre Deak
2014-02-28 19:07 ` Paulo Zanoni
2014-03-05 17:04 ` Daniel Vetter
2014-02-27 22:26 ` [PATCH 17/23] drm/i915: don't get/put PC8 when getting/putting power wells Paulo Zanoni
2014-02-28 17:13 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 18/23] drm/i915: remove dev_priv->pc8.enabled Paulo Zanoni
2014-02-28 17:14 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 19/23] drm/i915: move pc8.irqs_disabled to pm.irqs_disabled Paulo Zanoni
2014-02-28 17:15 ` Jesse Barnes
2014-02-28 18:17 ` Paulo Zanoni
2014-02-27 22:26 ` [PATCH 20/23] drm/i915: kill struct i915_package_c8 Paulo Zanoni
2014-02-28 17:16 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 21/23] drm/i915: rename __hsw_do_{en, dis}able_pc8 Paulo Zanoni
2014-02-28 17:17 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 22/23] drm/i915: update the PC8 and runtime PM documentation Paulo Zanoni
2014-02-28 17:19 ` Jesse Barnes
2014-02-27 22:26 ` [PATCH 23/23] drm/i915: init pm.suspended earlier Paulo Zanoni
2014-02-28 17:20 ` Jesse Barnes
2014-03-05 17:09 ` [PATCH 00/23] Merge PC8 with runtime PM, v2 Daniel Vetter
2014-03-06 22:23 ` Paulo Zanoni
2014-03-06 22:45 ` Daniel Vetter
2014-03-07 8:51 ` 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=1393601018.3479.65.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.