[Intel-gfx] [PATCH] drm/i915/execlists: Use vfunc to check engine submission mode

Janusz Krzysztofik janusz.krzysztofik at linux.intel.com
Mon Oct 28 13:11:27 UTC 2019


Hi MichaƂ,

On Monday, October 28, 2019 1:57:03 PM CET Michal Wajdeczko wrote:
> While processing CSB there is no need to look at GuC submission
> settings, just check if engine is configured for execlists mode.
> 
> While today GuC submission is disabled it's settings are still
> based on modparam values that might not correctly reflect actual
> submission status in case of any fallback. Until that is fully
> fixed, use alternate method to confirm that engine really runs in
> execlists mode by comparing set_default_submission vfunc.
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/gt/intel_lrc.c | 8 +++++++-
>  drivers/gpu/drm/i915/gt/intel_lrc.h | 2 ++
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/
intel_lrc.c
> index 16340740139d..c0d564b28beb 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -2022,7 +2022,7 @@ static void process_csb(struct intel_engine_cs 
*engine)
>  	 */
>  	GEM_BUG_ON(!tasklet_is_locked(&execlists->tasklet) &&
>  		   !reset_in_progress(execlists));
> -	GEM_BUG_ON(USES_GUC_SUBMISSION(engine->i915));
> +	GEM_BUG_ON(!intel_engine_in_execlists_submission_mode(engine));
>  
>  	/*
>  	 * Note that csb_write, csb_status may be either in HWSP or mmio.
> @@ -4711,6 +4711,12 @@ void intel_lr_context_reset(struct intel_engine_cs 
*engine,
>  	__execlists_update_reg_state(ce, engine);
>  }
>  
> +bool intel_engine_in_execlists_submission_mode(struct intel_engine_cs 
*engine)
> +{
> +	return engine->set_default_submission ==
> +	       intel_execlists_set_default_submission;
> +}
> +
>  #if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
>  #include "selftest_lrc.c"
>  #endif
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.h b/drivers/gpu/drm/i915/gt/
intel_lrc.h
> index 99dc576a4e25..23dde9083349 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.h
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.h
> @@ -145,4 +145,6 @@ struct intel_engine_cs *
>  intel_virtual_engine_get_sibling(struct intel_engine_cs *engine,
>  				 unsigned int sibling);
>  
> +bool intel_engine_in_execlists_submission_mode(struct intel_engine_cs 
*engine);

LGTM.
NIT: I'm wondering if the function should be made static if there is only one 
local user.

Reviewed-by: Janusz Krzysztofik <janusz.krzysztofik at linux,intel.com>

Thanks,
Janusz

> +
>  #endif /* _INTEL_LRC_H_ */
> 






More information about the Intel-gfx mailing list