[Intel-gfx] [PATCH v4 02/13] drm/i915/guc: Add support for data reporting in GuC responses

Michel Thierry michel.thierry at intel.com
Fri Mar 23 21:33:38 UTC 2018


On 3/23/2018 7:47 AM, Michal Wajdeczko wrote:
> GuC may return additional data in the response message.
> Format and meaning of this data is action specific. We will
> use this non-negative data as a new success return value.
> Currently used actions don't return data that way yet.
> 
> v2: fix prohibited space after '~' (Michel)
>      update commit message (Daniele)
> v3: rebase
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Oscar Mateo <oscar.mateo at intel.com>
> Cc: Michel Thierry <michel.thierry at intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Reviewed-by: Michel Thierry <michel.thierry at intel.com> #2

The r-b stands for v3.


> ---
>   drivers/gpu/drm/i915/intel_guc.c    |  3 +++
>   drivers/gpu/drm/i915/intel_guc_ct.c | 14 ++++++++------
>   2 files changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
> index 28075e6..77bf4e6 100644
> --- a/drivers/gpu/drm/i915/intel_guc.c
> +++ b/drivers/gpu/drm/i915/intel_guc.c
> @@ -366,6 +366,9 @@ int intel_guc_send_mmio(struct intel_guc *guc, const u32 *action, u32 len)
>   				 " ret=%d status=0x%08X response=0x%08X\n",
>   				 action[0], ret, status,
>   				 I915_READ(SOFT_SCRATCH(15)));
> +	} else {
> +		/* Use data from the GuC response as our return value */
> +		ret = INTEL_GUC_MSG_TO_DATA(status);
>   	}
>   
>   	intel_uncore_forcewake_put(dev_priv, guc->send_regs.fw_domains);
> diff --git a/drivers/gpu/drm/i915/intel_guc_ct.c b/drivers/gpu/drm/i915/intel_guc_ct.c
> index 1dafa7a..fa52259 100644
> --- a/drivers/gpu/drm/i915/intel_guc_ct.c
> +++ b/drivers/gpu/drm/i915/intel_guc_ct.c
> @@ -400,7 +400,9 @@ static int ctch_send(struct intel_guc *guc,
>   		return err;
>   	if (!INTEL_GUC_MSG_IS_RESPONSE_SUCCESS(*status))
>   		return -EIO;
> -	return 0;
> +
> +	/* Use data from the GuC status as our return value */
> +	return INTEL_GUC_MSG_TO_DATA(*status);
>   }
>   
>   /*
> @@ -410,18 +412,18 @@ static int intel_guc_send_ct(struct intel_guc *guc, const u32 *action, u32 len)
>   {
>   	struct intel_guc_ct_channel *ctch = &guc->ct.host_channel;
>   	u32 status = ~0; /* undefined */
> -	int err;
> +	int ret;
>   
>   	mutex_lock(&guc->send_mutex);
>   
> -	err = ctch_send(guc, ctch, action, len, &status);
> -	if (unlikely(err)) {
> +	ret = ctch_send(guc, ctch, action, len, &status);
> +	if (unlikely(ret < 0)) {
>   		DRM_ERROR("CT: send action %#X failed; err=%d status=%#X\n",
> -			  action[0], err, status);
> +			  action[0], ret, status);
>   	}
>   
>   	mutex_unlock(&guc->send_mutex);
> -	return err;
> +	return ret;
>   }
>   
>   /**
> 


More information about the Intel-gfx mailing list