[Intel-gfx] [PATCH v4 04/13] drm/i915/guc: Implement response handling in send_mmio()

Michel Thierry michel.thierry at intel.com
Fri Mar 23 21:55:09 UTC 2018


On 3/23/2018 7:47 AM, Michal Wajdeczko wrote:
> We're using data encoded in the status MMIO as return value from send
> function, but GuC may also write more data in remaining MMIO regs.
> Let's copy content of these registers to the buffer provided by caller.
> 
> v2: new line (Michel)
> v3: updated commit message
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: Oscar Mateo <oscar.mateo at intel.com>
> Reviewed-by: Michel Thierry <michel.thierry at intel.com> #2
> ---
>   drivers/gpu/drm/i915/intel_guc.c | 15 ++++++++++++---
>   1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
> index a533ff8..9ce01e5 100644
> --- a/drivers/gpu/drm/i915/intel_guc.c
> +++ b/drivers/gpu/drm/i915/intel_guc.c
> @@ -368,11 +368,20 @@ 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);
> +               goto out;
>          }
> 

I'm not a big fan of goto's, so I would have added the response handling 
in the else part.

But it's still correct, so my old r-b still stands.

-Michel

> +       if (response_buf) {
> +               int count = min(response_buf_size, guc->send_regs.count - 1);
> +
> +               for (i = 0; i < count; i++)
> +                       response_buf[i] = I915_READ(guc_send_reg(guc, i + 1));
> +       }
> +
> +       /* Use data from the GuC response as our return value */
> +       ret = INTEL_GUC_MSG_TO_DATA(status);
> +
> +out:
>          intel_uncore_forcewake_put(dev_priv, guc->send_regs.fw_domains);
>          mutex_unlock(&guc->send_mutex);
> 
> --
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 


More information about the Intel-gfx mailing list