[Intel-gfx] [PATCH v13 04/21] drm/i915/guc: Remove enable_guc_submission dependency for invoking GuC log functions

Michal Wajdeczko michal.wajdeczko at intel.com
Wed Oct 11 15:40:01 UTC 2017


On Wed, 11 Oct 2017 10:53:59 +0200, Sagar Arun Kamble  
<sagar.a.kamble at intel.com> wrote:

> With guc_log_level parameter sanitized and GuC interrupts control
> functions made self sufficient w.r.t interrupts state, we can remove
> the enable_guc_submission checks from flush_guc_logs and
> i915_guc_log_register/unregister and intel_uc_fini_hw.
>
> Signed-off-by: Sagar Arun Kamble <sagar.a.kamble at intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: MichaƂ Winiarski <michal.winiarski at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_guc_log.c | 9 ++-------
>  drivers/gpu/drm/i915/intel_uc.c      | 3 +--
>  2 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_guc_log.c  
> b/drivers/gpu/drm/i915/intel_guc_log.c
> index 0f201c0..fb5eb2b9 100644
> --- a/drivers/gpu/drm/i915/intel_guc_log.c
> +++ b/drivers/gpu/drm/i915/intel_guc_log.c
> @@ -505,8 +505,7 @@ static void guc_flush_logs(struct intel_guc *guc)
>  {
>  	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> -	if (!i915_guc_submission_enabled(guc) ||
> -	    i915_modparams.guc_log_level < 0)
> +	if (i915_modparams.guc_log_level < 0)
>  		return;
> 	/* First disable the interrupts, will be renabled afterwards */
> @@ -646,8 +645,7 @@ int i915_guc_log_control(struct drm_i915_private  
> *dev_priv, u64 control_val)
> void i915_guc_log_register(struct drm_i915_private *dev_priv)
>  {
> -	if (!i915_guc_submission_enabled(&dev_priv->guc) ||
> -	    i915_modparams.guc_log_level < 0)
> +	if (i915_modparams.guc_log_level < 0)

I would expect above two fixes in patch 2/21

>  		return;
> 	mutex_lock(&dev_priv->drm.struct_mutex);
> @@ -657,9 +655,6 @@ void i915_guc_log_register(struct drm_i915_private  
> *dev_priv)
> void i915_guc_log_unregister(struct drm_i915_private *dev_priv)
>  {
> -	if (!i915_guc_submission_enabled(&dev_priv->guc))
> -		return;

Hmm, as i915_guc_log_unregister() is called unconditionally by
i915_driver_unregister so maybe here we should have at least

	if (i915_modparams.guc_log_level < 0)
		return;

> -
>  	mutex_lock(&dev_priv->drm.struct_mutex);
>  	/* GuC logging is currently the only user of Guc2Host interrupts */
>  	gen9_disable_guc_interrupts(dev_priv);

What about dropping this gen9_disable_guc_interrupts from here
and rely on the intel_uc_fini_hw() that will do the same?

> diff --git a/drivers/gpu/drm/i915/intel_uc.c  
> b/drivers/gpu/drm/i915/intel_uc.c
> index 3cf3cbd..974434e 100644
> --- a/drivers/gpu/drm/i915/intel_uc.c
> +++ b/drivers/gpu/drm/i915/intel_uc.c
> @@ -280,8 +280,7 @@ void intel_uc_fini_hw(struct drm_i915_private  
> *dev_priv)
> 	guc_disable_communication(guc);
> -	if (i915_guc_submission_enabled(guc))
> -		gen9_disable_guc_interrupts(dev_priv);
> +	gen9_disable_guc_interrupts(dev_priv);
>  	i915_guc_submission_fini(dev_priv);
> 	i915_ggtt_disable_guc(dev_priv);



More information about the Intel-gfx mailing list