[Intel-gfx] [PATCH] drm/i915: Report command parser version 0 if disabled

Joonas Lahtinen joonas.lahtinen at linux.intel.com
Wed May 4 16:08:37 UTC 2016


On ke, 2016-05-04 at 14:25 +0100, Chris Wilson wrote:
> If the command parser is not active, then it is appropriate to report it
> as operating at version 0 as no higher mode is supported. This greatly
> simplifies userspace querying for the command parser as we then do not
> need to second guess when it will be active (a mixture of module
> parameters and generational support, which may change over time).
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

Assuming zero was previously unused.

Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>

> ---
>  drivers/gpu/drm/i915/i915_cmd_parser.c | 15 ++++++++++++++-
>  drivers/gpu/drm/i915/i915_dma.c        |  2 +-
>  drivers/gpu/drm/i915/i915_drv.h        |  2 +-
>  3 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_cmd_parser.c b/drivers/gpu/drm/i915/i915_cmd_parser.c
> index a337f33bec5b..17831fac49f5 100644
> --- a/drivers/gpu/drm/i915/i915_cmd_parser.c
> +++ b/drivers/gpu/drm/i915/i915_cmd_parser.c
> @@ -1275,8 +1275,21 @@ int i915_parse_cmds(struct intel_engine_cs *engine,
>   *
>   * Return: the current version number of the cmd parser
>   */
> -int i915_cmd_parser_get_version(void)
> +int i915_cmd_parser_get_version(struct drm_i915_private *dev_priv)
>  {
> +	struct intel_engine_cs *engine;
> +	bool active = false;
> +
> +	/* If the comand parser is not enabled, report 0 - unsupported */
> +	for_each_engine(engine, dev_priv) {
> +		if (i915_needs_cmd_parser(engine)) {
> +			active = true;
> +			break;
> +		}
> +	}
> +	if (!active)
> +		return 0;
> +
>  	/*
>  	 * Command parser version history
>  	 *
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index c91387f1aedd..ad7abe517700 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -204,7 +204,7 @@ static int i915_getparam(struct drm_device *dev, void *data,
>  		value = 1;
>  		break;
>  	case I915_PARAM_CMD_PARSER_VERSION:
> -		value = i915_cmd_parser_get_version();
> +		value = i915_cmd_parser_get_version(dev_priv);
>  		break;
>  	case I915_PARAM_HAS_COHERENT_PHYS_GTT:
>  		value = 1;
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 75a1675ea6ce..d5496aba1cd5 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -3442,7 +3442,7 @@ void i915_get_extra_instdone(struct drm_device *dev, uint32_t *instdone);
>  const char *i915_cache_level_str(struct drm_i915_private *i915, int type);
>  
>  /* i915_cmd_parser.c */
> -int i915_cmd_parser_get_version(void);
> +int i915_cmd_parser_get_version(struct drm_i915_private *dev_priv);
>  int i915_cmd_parser_init_ring(struct intel_engine_cs *engine);
>  void i915_cmd_parser_fini_ring(struct intel_engine_cs *engine);
>  bool i915_needs_cmd_parser(struct intel_engine_cs *engine);
-- 
Joonas Lahtinen
Open Source Technology Center
Intel Corporation


More information about the Intel-gfx mailing list