[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