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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@xxxxxxxxx>
Cc: Oscar Mateo <oscar.mateo@xxxxxxxxx>
Reviewed-by: Michel Thierry <michel.thierry@xxxxxxxxx> #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@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux