All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Sagar Arun Kamble <sagar.a.kamble@intel.com>,
	intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 03/11] drm/i915/guc: Pass intel_guc struct parameter to GuC interrupts functions
Date: Wed, 18 Oct 2017 13:47:50 +0100	[thread overview]
Message-ID: <768318b0-cec7-36ae-a7c8-5a4fd13380c2@linux.intel.com> (raw)
In-Reply-To: <1508309222-26406-4-git-send-email-sagar.a.kamble@intel.com>


On 18/10/2017 07:46, Sagar Arun Kamble wrote:
> GuC interrupts handling functions are GuC specific functions hence update
> the parameter from dev_priv to intel_guc struct.
> 
> Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> ---
>   drivers/gpu/drm/i915/i915_irq.c      |  2 +-
>   drivers/gpu/drm/i915/intel_guc.c     | 22 +++++++++++++++-------
>   drivers/gpu/drm/i915/intel_guc.h     |  8 ++++----
>   drivers/gpu/drm/i915/intel_guc_log.c |  8 +++-----
>   drivers/gpu/drm/i915/intel_uc.c      |  8 ++++----
>   5 files changed, 27 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 84a4bf3..1a5c026 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1441,7 +1441,7 @@ static void gen8_gt_irq_handler(struct drm_i915_private *dev_priv,
>   		gen6_rps_irq_handler(dev_priv, gt_iir[2]);
>   
>   	if (gt_iir[2] & dev_priv->pm_guc_events)
> -		intel_guc_irq_handler(dev_priv, gt_iir[2]);
> +		intel_guc_irq_handler(&dev_priv->guc, gt_iir[2]);
>   }
>   
>   static bool bxt_port_hotplug_long_detect(enum port port, u32 val)
> diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
> index 3a64ae1..31f25e5 100644
> --- a/drivers/gpu/drm/i915/intel_guc.c
> +++ b/drivers/gpu/drm/i915/intel_guc.c
> @@ -274,7 +274,7 @@ int intel_guc_suspend(struct drm_i915_private *dev_priv)
>   	if (guc->fw.load_status != INTEL_UC_FIRMWARE_SUCCESS)
>   		return 0;
>   
> -	intel_disable_guc_interrupts(dev_priv);
> +	intel_disable_guc_interrupts(guc);
>   
>   	ctx = dev_priv->kernel_context;
>   
> @@ -302,7 +302,7 @@ int intel_guc_resume(struct drm_i915_private *dev_priv)
>   		return 0;
>   
>   	if (i915_modparams.guc_log_level >= 0)
> -		intel_enable_guc_interrupts(dev_priv);
> +		intel_enable_guc_interrupts(guc);
>   
>   	ctx = dev_priv->kernel_context;
>   
> @@ -368,15 +368,19 @@ u32 intel_guc_wopcm_size(struct drm_i915_private *dev_priv)
>   	return wopcm_size;
>   }
>   
> -void intel_reset_guc_interrupts(struct drm_i915_private *dev_priv)
> +void intel_reset_guc_interrupts(struct intel_guc *guc)
>   {
> +	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> +
>   	spin_lock_irq(&dev_priv->irq_lock);
>   	gen6_reset_pm_iir(dev_priv, dev_priv->pm_guc_events);
>   	spin_unlock_irq(&dev_priv->irq_lock);
>   }
>   
> -void intel_enable_guc_interrupts(struct drm_i915_private *dev_priv)
> +void intel_enable_guc_interrupts(struct intel_guc *guc)
>   {
> +	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> +
>   	spin_lock_irq(&dev_priv->irq_lock);
>   	if (!dev_priv->guc.interrupts_enabled) {
>   		WARN_ON_ONCE(I915_READ(gen6_pm_iir(dev_priv)) &
> @@ -387,8 +391,10 @@ void intel_enable_guc_interrupts(struct drm_i915_private *dev_priv)
>   	spin_unlock_irq(&dev_priv->irq_lock);
>   }
>   
> -void intel_disable_guc_interrupts(struct drm_i915_private *dev_priv)
> +void intel_disable_guc_interrupts(struct intel_guc *guc)
>   {
> +	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> +
>   	spin_lock_irq(&dev_priv->irq_lock);
>   	dev_priv->guc.interrupts_enabled = false;
>   
> @@ -397,11 +403,13 @@ void intel_disable_guc_interrupts(struct drm_i915_private *dev_priv)
>   	spin_unlock_irq(&dev_priv->irq_lock);
>   	synchronize_irq(dev_priv->drm.irq);
>   
> -	intel_reset_guc_interrupts(dev_priv);
> +	intel_reset_guc_interrupts(guc);
>   }
>   
> -void intel_guc_irq_handler(struct drm_i915_private *dev_priv, u32 gt_iir)
> +void intel_guc_irq_handler(struct intel_guc *guc, u32 gt_iir)
>   {
> +	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> +
>   	if (gt_iir & GEN9_GUC_TO_HOST_INT_EVENT) {
>   		/* Sample the log buffer flush related bits & clear them out now
>   		 * itself from the message identity register to minimize the
> diff --git a/drivers/gpu/drm/i915/intel_guc.h b/drivers/gpu/drm/i915/intel_guc.h
> index 8b26505..e89b4ae 100644
> --- a/drivers/gpu/drm/i915/intel_guc.h
> +++ b/drivers/gpu/drm/i915/intel_guc.h
> @@ -116,9 +116,9 @@ static inline u32 guc_ggtt_offset(struct i915_vma *vma)
>   int intel_guc_resume(struct drm_i915_private *dev_priv);
>   struct i915_vma *intel_guc_allocate_vma(struct intel_guc *guc, u32 size);
>   u32 intel_guc_wopcm_size(struct drm_i915_private *dev_priv);
> -void intel_reset_guc_interrupts(struct drm_i915_private *dev_priv);
> -void intel_enable_guc_interrupts(struct drm_i915_private *dev_priv);
> -void intel_disable_guc_interrupts(struct drm_i915_private *dev_priv);
> -void intel_guc_irq_handler(struct drm_i915_private *dev_priv, u32 pm_iir);
> +void intel_reset_guc_interrupts(struct intel_guc *guc);
> +void intel_enable_guc_interrupts(struct intel_guc *guc);
> +void intel_disable_guc_interrupts(struct intel_guc *guc);
> +void intel_guc_irq_handler(struct intel_guc *guc, u32 pm_iir);
>   
>   #endif
> diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c
> index 8120208..f53c663 100644
> --- a/drivers/gpu/drm/i915/intel_guc_log.c
> +++ b/drivers/gpu/drm/i915/intel_guc_log.c
> @@ -503,14 +503,12 @@ static void guc_log_capture_logs(struct intel_guc *guc)
>   
>   static void guc_flush_logs(struct intel_guc *guc)
>   {
> -	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> -
>   	if (!i915_modparams.enable_guc_submission ||
>   	    (i915_modparams.guc_log_level < 0))
>   		return;
>   
>   	/* First disable the interrupts, will be renabled afterwards */
> -	intel_disable_guc_interrupts(dev_priv);
> +	intel_disable_guc_interrupts(guc);
>   
>   	/* Before initiating the forceful flush, wait for any pending/ongoing
>   	 * flush to complete otherwise forceful flush may not actually happen.
> @@ -628,7 +626,7 @@ int i915_guc_log_control(struct drm_i915_private *dev_priv, u64 control_val)
>   		}
>   
>   		/* GuC logging is currently the only user of Guc2Host interrupts */
> -		intel_enable_guc_interrupts(dev_priv);
> +		intel_enable_guc_interrupts(guc);
>   	} else {
>   		/* Once logging is disabled, GuC won't generate logs & send an
>   		 * interrupt. But there could be some data in the log buffer
> @@ -662,7 +660,7 @@ void i915_guc_log_unregister(struct drm_i915_private *dev_priv)
>   
>   	mutex_lock(&dev_priv->drm.struct_mutex);
>   	/* GuC logging is currently the only user of Guc2Host interrupts */
> -	intel_disable_guc_interrupts(dev_priv);
> +	intel_disable_guc_interrupts(&dev_priv->guc);
>   	guc_log_runtime_destroy(&dev_priv->guc);
>   	mutex_unlock(&dev_priv->drm.struct_mutex);
>   }
> diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c
> index b9b9947a0..62738ad 100644
> --- a/drivers/gpu/drm/i915/intel_uc.c
> +++ b/drivers/gpu/drm/i915/intel_uc.c
> @@ -158,7 +158,7 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
>   		return 0;
>   
>   	guc_disable_communication(guc);
> -	intel_reset_guc_interrupts(dev_priv);
> +	intel_reset_guc_interrupts(guc);
>   
>   	/* We need to notify the guc whenever we change the GGTT */
>   	i915_ggtt_enable_guc(dev_priv);
> @@ -215,7 +215,7 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
>   	intel_huc_auth(&dev_priv->huc);
>   	if (i915_modparams.enable_guc_submission) {
>   		if (i915_modparams.guc_log_level >= 0)
> -			intel_enable_guc_interrupts(dev_priv);
> +			intel_enable_guc_interrupts(guc);
>   
>   		ret = i915_guc_submission_enable(dev_priv);
>   		if (ret)
> @@ -241,7 +241,7 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
>   	 */
>   err_interrupts:
>   	guc_disable_communication(guc);
> -	intel_disable_guc_interrupts(dev_priv);
> +	intel_disable_guc_interrupts(guc);
>   err_log_capture:
>   	guc_capture_load_err_log(guc);
>   err_submission:
> @@ -282,7 +282,7 @@ void intel_uc_fini_hw(struct drm_i915_private *dev_priv)
>   	guc_disable_communication(&dev_priv->guc);
>   
>   	if (i915_modparams.enable_guc_submission) {
> -		intel_disable_guc_interrupts(dev_priv);
> +		intel_disable_guc_interrupts(&dev_priv->guc);
>   		i915_guc_submission_fini(dev_priv);
>   	}
>   
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

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

  reply	other threads:[~2017-10-18 12:47 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-18  6:46 [PATCH 00/11] GuC Interrupts/Log updates Sagar Arun Kamble
2017-10-18  6:46 ` [PATCH 01/11] drm/i915: Export low level PM IRQ functions to control from GuC functions Sagar Arun Kamble
2017-10-18 12:42   ` Tvrtko Ursulin
2017-10-18 13:48     ` Sagar Arun Kamble
2017-10-18  6:46 ` [PATCH 02/11] drm/i915/guc: Move GuC interrupts related functions from i915_irq.c to intel_guc.c Sagar Arun Kamble
2017-10-18 12:46   ` Tvrtko Ursulin
2017-10-18 14:06     ` Sagar Arun Kamble
2017-10-18  6:46 ` [PATCH 03/11] drm/i915/guc: Pass intel_guc struct parameter to GuC interrupts functions Sagar Arun Kamble
2017-10-18 12:47   ` Tvrtko Ursulin [this message]
2017-10-18  6:46 ` [PATCH 04/11] drm/i915/guc: Sanitize module parameter guc_log_level Sagar Arun Kamble
2017-10-18 12:59   ` Tvrtko Ursulin
2017-10-18 15:50     ` Sagar Arun Kamble
2017-10-19  7:22       ` Tvrtko Ursulin
2017-10-21  8:11         ` Sagar Arun Kamble
2017-10-18  6:46 ` [PATCH 05/11] drm/i915/guc: Make GuC log related functions depend only on log level Sagar Arun Kamble
2017-10-18 13:07   ` Tvrtko Ursulin
2017-10-18 15:57     ` Sagar Arun Kamble
2017-10-18  6:46 ` [PATCH 06/11] drm/i915/guc: Only release GuC log object during submission_fini Sagar Arun Kamble
2017-10-18 13:12   ` Tvrtko Ursulin
2017-10-18 16:04     ` Sagar Arun Kamble
2017-10-19  7:18       ` Tvrtko Ursulin
2017-10-21  8:09         ` Sagar Arun Kamble
2017-10-18  6:46 ` [PATCH 07/11] drm/i915/guc: Grab RPM wakelock while disabling GuC interrupts Sagar Arun Kamble
2017-10-19 10:09   ` Tvrtko Ursulin
2017-10-21 13:27     ` Sagar Arun Kamble
2017-10-18  6:46 ` [PATCH 08/11] drm/i915/guc: Add client support to enable/disable " Sagar Arun Kamble
2017-10-19 10:19   ` Tvrtko Ursulin
2017-10-21 16:38     ` Sagar Arun Kamble
2017-10-18  6:47 ` [PATCH 09/11] drm/i915/guc: Fix GuC interrupts disabling with Logging Sagar Arun Kamble
2017-10-19 10:24   ` Tvrtko Ursulin
2017-10-21 16:39     ` Sagar Arun Kamble
2017-10-18  6:47 ` [PATCH 10/11] drm/i915/guc: Skip interrupt enabling if logging is already enabled Sagar Arun Kamble
2017-10-19 10:31   ` Tvrtko Ursulin
2017-10-21 16:47     ` Sagar Arun Kamble
2017-10-18  6:47 ` [PATCH 11/11] drm/i915/guc: Restore GuC interrupts across suspend/reset if enabled Sagar Arun Kamble
2017-10-19 11:03   ` Tvrtko Ursulin
2017-10-21 17:09     ` Sagar Arun Kamble
2017-10-18  7:02 ` ✓ Fi.CI.BAT: success for GuC Interrupts/Log updates Patchwork
2017-10-18 13:41 ` ✓ Fi.CI.IGT: " Patchwork

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=768318b0-cec7-36ae-a7c8-5a4fd13380c2@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=sagar.a.kamble@intel.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.