diff mbox

[5/5] drm/i915: Use safer intel_uncore_wait_for_register in ring-init

Message ID 20170411101340.31994-5-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson April 11, 2017, 10:13 a.m. UTC
While we do hold the forcewake for legacy ringbuffer initialisation, we
don't guard our access with the uncore.lock spinlock. In theory, we only
initialise when no others should be accessing the same mmio cachelines,
but in practice be safe as this is an infrequently used path and not
worth risky micro-optimisations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Tvrtko Ursulin April 11, 2017, 11:28 a.m. UTC | #1
On 11/04/2017 11:13, Chris Wilson wrote:
> While we do hold the forcewake for legacy ringbuffer initialisation, we
> don't guard our access with the uncore.lock spinlock. In theory, we only
> initialise when no others should be accessing the same mmio cachelines,
> but in practice be safe as this is an infrequently used path and not
> worth risky micro-optimisations.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_ringbuffer.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index 331da59a1eb5..97d5fcca8805 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -538,9 +538,9 @@ static int init_ring_common(struct intel_engine_cs *engine)
>  	I915_WRITE_CTL(engine, RING_CTL_SIZE(ring->size) | RING_VALID);
>
>  	/* If the head is still not zero, the ring is dead */
> -	if (intel_wait_for_register_fw(dev_priv, RING_CTL(engine->mmio_base),
> -				       RING_VALID, RING_VALID,
> -				       50)) {
> +	if (intel_wait_for_register(dev_priv, RING_CTL(engine->mmio_base),
> +				    RING_VALID, RING_VALID,
> +				    50)) {
>  		DRM_ERROR("%s initialization failed "
>  			  "ctl %08x (valid? %d) head %08x [%08x] tail %08x [%08x] start %08x [expected %08x]\n",
>  			  engine->name,
>

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 331da59a1eb5..97d5fcca8805 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -538,9 +538,9 @@  static int init_ring_common(struct intel_engine_cs *engine)
 	I915_WRITE_CTL(engine, RING_CTL_SIZE(ring->size) | RING_VALID);
 
 	/* If the head is still not zero, the ring is dead */
-	if (intel_wait_for_register_fw(dev_priv, RING_CTL(engine->mmio_base),
-				       RING_VALID, RING_VALID,
-				       50)) {
+	if (intel_wait_for_register(dev_priv, RING_CTL(engine->mmio_base),
+				    RING_VALID, RING_VALID,
+				    50)) {
 		DRM_ERROR("%s initialization failed "
 			  "ctl %08x (valid? %d) head %08x [%08x] tail %08x [%08x] start %08x [expected %08x]\n",
 			  engine->name,