[Intel-gfx] [PATCH 9/9] drm/i915: Move intel_guc_allocate_vma to guc.c

Sagar Arun Kamble sagar.a.kamble at intel.com
Sat Sep 30 17:41:37 UTC 2017



On 9/29/2017 11:11 PM, Michal Wajdeczko wrote:
> We want to keep GuC functions together.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Sagar Arun Kamble <sagar.a.kamble at intel.com>
Reviewed-by: Sagar Arun Kamble <sagar.a.kamble at intel.com>
> ---
>   drivers/gpu/drm/i915/i915_guc_submission.c | 42 ------------------------------
>   drivers/gpu/drm/i915/intel_guc.c           | 42 ++++++++++++++++++++++++++++++
>   drivers/gpu/drm/i915/intel_guc.h           |  2 +-
>   3 files changed, 43 insertions(+), 43 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
> index f70a875..89e2a9c 100644
> --- a/drivers/gpu/drm/i915/i915_guc_submission.c
> +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
> @@ -643,48 +643,6 @@ static void i915_guc_irq_handler(unsigned long data)
>    * path of i915_guc_submit() above.
>    */
>   
> -/**
> - * intel_guc_allocate_vma() - Allocate a GGTT VMA for GuC usage
> - * @guc:	the guc
> - * @size:	size of area to allocate (both virtual space and memory)
> - *
> - * This is a wrapper to create an object for use with the GuC. In order to
> - * use it inside the GuC, an object needs to be pinned lifetime, so we allocate
> - * both some backing storage and a range inside the Global GTT. We must pin
> - * it in the GGTT somewhere other than than [0, GUC_WOPCM_TOP) because that
> - * range is reserved inside GuC.
> - *
> - * Return:	A i915_vma if successful, otherwise an ERR_PTR.
> - */
> -struct i915_vma *intel_guc_allocate_vma(struct intel_guc *guc, u32 size)
> -{
> -	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> -	struct drm_i915_gem_object *obj;
> -	struct i915_vma *vma;
> -	int ret;
> -
> -	obj = i915_gem_object_create(dev_priv, size);
> -	if (IS_ERR(obj))
> -		return ERR_CAST(obj);
> -
> -	vma = i915_vma_instance(obj, &dev_priv->ggtt.base, NULL);
> -	if (IS_ERR(vma))
> -		goto err;
> -
> -	ret = i915_vma_pin(vma, 0, PAGE_SIZE,
> -			   PIN_GLOBAL | PIN_OFFSET_BIAS | GUC_WOPCM_TOP);
> -	if (ret) {
> -		vma = ERR_PTR(ret);
> -		goto err;
> -	}
> -
> -	return vma;
> -
> -err:
> -	i915_gem_object_put(obj);
> -	return vma;
> -}
> -
>   /* Check that a doorbell register is in the expected state */
>   static bool doorbell_ok(struct intel_guc *guc, u16 db_id)
>   {
> diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
> index 793cf49..d337ac2 100644
> --- a/drivers/gpu/drm/i915/intel_guc.c
> +++ b/drivers/gpu/drm/i915/intel_guc.c
> @@ -219,3 +219,45 @@ int intel_guc_resume(struct drm_i915_private *dev_priv)
>   
>   	return intel_guc_send(guc, data, ARRAY_SIZE(data));
>   }
> +
> +/**
> + * intel_guc_allocate_vma() - Allocate a GGTT VMA for GuC usage
> + * @guc:	the guc
> + * @size:	size of area to allocate (both virtual space and memory)
> + *
> + * This is a wrapper to create an object for use with the GuC. In order to
> + * use it inside the GuC, an object needs to be pinned lifetime, so we allocate
> + * both some backing storage and a range inside the Global GTT. We must pin
> + * it in the GGTT somewhere other than than [0, GUC_WOPCM_TOP) because that
> + * range is reserved inside GuC.
> + *
> + * Return:	A i915_vma if successful, otherwise an ERR_PTR.
> + */
> +struct i915_vma *intel_guc_allocate_vma(struct intel_guc *guc, u32 size)
> +{
> +	struct drm_i915_private *i915 = guc_to_i915(guc);
> +	struct drm_i915_gem_object *obj;
> +	struct i915_vma *vma;
> +	int ret;
> +
> +	obj = i915_gem_object_create(i915, size);
> +	if (IS_ERR(obj))
> +		return ERR_CAST(obj);
> +
> +	vma = i915_vma_instance(obj, &i915->ggtt.base, NULL);
> +	if (IS_ERR(vma))
> +		goto err;
> +
> +	ret = i915_vma_pin(vma, 0, PAGE_SIZE,
> +			   PIN_GLOBAL | PIN_OFFSET_BIAS | GUC_WOPCM_TOP);
> +	if (ret) {
> +		vma = ERR_PTR(ret);
> +		goto err;
> +	}
> +
> +	return vma;
> +
> +err:
> +	i915_gem_object_put(obj);
> +	return vma;
> +}
> diff --git a/drivers/gpu/drm/i915/intel_guc.h b/drivers/gpu/drm/i915/intel_guc.h
> index ffedb06..45acfbd 100644
> --- a/drivers/gpu/drm/i915/intel_guc.h
> +++ b/drivers/gpu/drm/i915/intel_guc.h
> @@ -151,6 +151,7 @@ int intel_guc_sample_forcewake(struct intel_guc *guc);
>   int intel_guc_auth_huc(struct intel_guc *guc, u32 rsa_offset);
>   int intel_guc_suspend(struct drm_i915_private *dev_priv);
>   int intel_guc_resume(struct drm_i915_private *dev_priv);
> +struct i915_vma *intel_guc_allocate_vma(struct intel_guc *guc, u32 size);
>   
>   /* intel_guc_loader.c */
>   int intel_guc_select_fw(struct intel_guc *guc);
> @@ -162,7 +163,6 @@ int i915_guc_submission_init(struct drm_i915_private *dev_priv);
>   int i915_guc_submission_enable(struct drm_i915_private *dev_priv);
>   void i915_guc_submission_disable(struct drm_i915_private *dev_priv);
>   void i915_guc_submission_fini(struct drm_i915_private *dev_priv);
> -struct i915_vma *intel_guc_allocate_vma(struct intel_guc *guc, u32 size);
>   
>   /* intel_guc_log.c */
>   int intel_guc_log_create(struct intel_guc *guc);



More information about the Intel-gfx mailing list