[Intel-gfx] [PATCH 04/15] drm/i915/gt: Assume we hold forcewake for execlists resume
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Wed Jul 3 12:03:15 UTC 2019
On 03/07/2019 10:17, Chris Wilson wrote:
> We can assume the caller is holding a blanket forcewake for the
> register writes during resume, and so we can skip taking individual
> locks around each write inside execlists resume.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/gt/intel_lrc.c | 23 ++++++++++++-----------
> 1 file changed, 12 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 953b3938a85f..497ca52381a7 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -2076,22 +2076,23 @@ static int intel_init_workaround_bb(struct intel_engine_cs *engine)
>
> static void enable_execlists(struct intel_engine_cs *engine)
> {
> + u32 mode;
> +
> + assert_forcewakes_active(engine->uncore, FORCEWAKE_ALL);
> +
> intel_engine_set_hwsp_writemask(engine, ~0u); /* HWSTAM */
>
> if (INTEL_GEN(engine->i915) >= 11)
> - ENGINE_WRITE(engine,
> - RING_MODE_GEN7,
> - _MASKED_BIT_ENABLE(GEN11_GFX_DISABLE_LEGACY_MODE));
> + mode = _MASKED_BIT_ENABLE(GEN11_GFX_DISABLE_LEGACY_MODE);
> else
> - ENGINE_WRITE(engine,
> - RING_MODE_GEN7,
> - _MASKED_BIT_ENABLE(GFX_RUN_LIST_ENABLE));
> + mode = _MASKED_BIT_ENABLE(GFX_RUN_LIST_ENABLE);
> + ENGINE_WRITE_FW(engine, RING_MODE_GEN7, mode);
>
> - ENGINE_WRITE(engine, RING_MI_MODE, _MASKED_BIT_DISABLE(STOP_RING));
> + ENGINE_WRITE_FW(engine, RING_MI_MODE, _MASKED_BIT_DISABLE(STOP_RING));
>
> - ENGINE_WRITE(engine,
> - RING_HWS_PGA,
> - i915_ggtt_offset(engine->status_page.vma));
> + ENGINE_WRITE_FW(engine,
> + RING_HWS_PGA,
> + i915_ggtt_offset(engine->status_page.vma));
> ENGINE_POSTING_READ(engine, RING_HWS_PGA);
> }
>
> @@ -2099,7 +2100,7 @@ static bool unexpected_starting_state(struct intel_engine_cs *engine)
> {
> bool unexpected = false;
>
> - if (ENGINE_READ(engine, RING_MI_MODE) & STOP_RING) {
> + if (ENGINE_READ_FW(engine, RING_MI_MODE) & STOP_RING) {
> DRM_DEBUG_DRIVER("STOP_RING still set in RING_MI_MODE\n");
> unexpected = true;
> }
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list