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.wajdec...@intel.com>
Cc: Oscar Mateo <oscar.ma...@intel.com>
Cc: Michel Thierry <michel.thie...@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospu...@intel.com>
Reviewed-by: Michel Thierry <michel.thie...@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;
  }
/**

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

Reply via email to