[Intel-gfx] [PATCH 1/5] drm/i915/guc: doorbell reset should avoid used doorbells
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Tue Jul 19 14:43:57 UTC 2016
On 19/07/16 13:59, Dave Gordon wrote:
> guc_init_doorbell_hw() borrows the (currently single) GuC client to use
> in reinitialising ALL the doorbell registers (as the hardware doesn't
> reset them when the GuC is reset). As a prerequisite for accommodating
> multiple clients, it should only reset doorbells that are supposed to be
> disabled, avoiding those that are marked as in use by any client.
>
> Signed-off-by: Dave Gordon <david.s.gordon at intel.com>
> ---
> drivers/gpu/drm/i915/i915_guc_submission.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
> index 2112e02..d8402e4 100644
> --- a/drivers/gpu/drm/i915/i915_guc_submission.c
> +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
> @@ -699,7 +699,7 @@ static void gem_release_guc_obj(struct drm_i915_gem_object *obj)
> }
>
> /*
> - * Borrow the first client to set up & tear down every doorbell
> + * Borrow the first client to set up & tear down each unused doorbell
> * in turn, to ensure that all doorbell h/w is (re)initialised.
> */
> static void guc_init_doorbell_hw(struct intel_guc *guc)
> @@ -715,6 +715,9 @@ static void guc_init_doorbell_hw(struct intel_guc *guc)
> i915_reg_t drbreg = GEN8_DRBREGL(i);
> u32 value = I915_READ(drbreg);
>
> + if (test_bit(i, guc->doorbell_bitmap))
> + continue;
> +
> err = guc_update_doorbell_id(guc, client, i);
>
> /* Report update failure or unexpectedly active doorbell */
> @@ -733,6 +736,9 @@ static void guc_init_doorbell_hw(struct intel_guc *guc)
> i915_reg_t drbreg = GEN8_DRBREGL(i);
> u32 value = I915_READ(drbreg);
>
> + if (test_bit(i, guc->doorbell_bitmap))
> + continue;
> +
> if (i != db_id && (value & GUC_DOORBELL_ENABLED))
> DRM_DEBUG_DRIVER("Doorbell %d (reg 0x%x) finally 0x%x\n",
> i, drbreg.reg, value);
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list