[Intel-gfx] [PATCH] drm/i915/guc: Take enable_guc_loading check out of GEM core code

Oscar Mateo oscar.mateo at intel.com
Tue Mar 28 16:55:35 UTC 2017


I wanted to get this out of the way as soon as possible, but I'll follow 
shortly with a proposal to remove enable_guc_loading as a module parameter.

Thanks,

Oscar


On 03/28/2017 09:53 AM, Oscar Mateo wrote:
> The should happen as soon as possible, but always within the logic that
> depends on it (and not interrupting the top-level driver control flow).
>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Signed-off-by: Oscar Mateo <oscar.mateo at intel.com>
> ---
>   drivers/gpu/drm/i915/i915_drv.c |  3 +--
>   drivers/gpu/drm/i915/i915_gem.c | 10 ++++------
>   drivers/gpu/drm/i915/intel_uc.c |  6 ++++++
>   3 files changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index d0524fb..c616b4e 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -549,8 +549,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
>   static void i915_gem_fini(struct drm_i915_private *dev_priv)
>   {
>   	mutex_lock(&dev_priv->drm.struct_mutex);
> -	if (i915.enable_guc_loading)
> -		intel_uc_fini_hw(dev_priv);
> +	intel_uc_fini_hw(dev_priv);
>   	i915_gem_cleanup_engines(dev_priv);
>   	i915_gem_context_fini(dev_priv);
>   	mutex_unlock(&dev_priv->drm.struct_mutex);
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 84ea249..2709be9 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -4611,12 +4611,10 @@ int i915_gem_init_hw(struct drm_i915_private *dev_priv)
>   
>   	intel_mocs_init_l3cc_table(dev_priv);
>   
> -	if (i915.enable_guc_loading) {
> -		/* We can't enable contexts until all firmware is loaded */
> -		ret = intel_uc_init_hw(dev_priv);
> -		if (ret)
> -			goto out;
> -	}
> +	/* We can't enable contexts until all firmware is loaded */
> +	ret = intel_uc_init_hw(dev_priv);
> +	if (ret)
> +		goto out;
>   
>   out:
>   	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
> diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c
> index c767dc3..1965322 100644
> --- a/drivers/gpu/drm/i915/intel_uc.c
> +++ b/drivers/gpu/drm/i915/intel_uc.c
> @@ -254,6 +254,9 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
>   {
>   	int ret, attempts;
>   
> +	if (!i915.enable_guc_loading)
> +		return 0;
> +
>   	gen9_reset_guc_interrupts(dev_priv);
>   
>   	/* We need to notify the guc whenever we change the GGTT */
> @@ -343,6 +346,9 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
>   
>   void intel_uc_fini_hw(struct drm_i915_private *dev_priv)
>   {
> +	if (!i915.enable_guc_loading)
> +		return;
> +
>   	if (i915.enable_guc_submission) {
>   		i915_guc_submission_disable(dev_priv);
>   		gen9_disable_guc_interrupts(dev_priv);



More information about the Intel-gfx mailing list