[Intel-gfx] [PATCH v4 04/13] drm/i915/guc: Implement response handling in send_mmio()
Michal Wajdeczko
michal.wajdeczko at intel.com
Sat Mar 24 07:09:25 UTC 2018
On Fri, 23 Mar 2018 22:55:09 +0100, Michel Thierry
<michel.thierry at intel.com> wrote:
> 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.
me too, but there were too many indents and code was getting less readable
due to 80 column limit
/m
>
> 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