[PATCH 2/8] drm/amdgpu: Remove GWS barriers pre-reservation for gfx

Christian K├Ânig ckoenig.leichtzumerken at gmail.com
Fri May 10 17:41:53 UTC 2019


Am 10.05.19 um 18:01 schrieb Zeng, Oak:
> User space allocated GWS barriers are used. The kernel
> pre-allocated GWS barriers are unused.

I have a patch which goes a step further and also removes the GDS and OA 
stuff as well and also cleans up the internal variables.

Give me a moment to dig that up,
Christian.

>
> Change-Id: I7aac259d1f6b7064d02aff231279ff605c29ea34
> Signed-off-by: Oak Zeng <Oak.Zeng at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c | 2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h     | 3 +--
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c     | 6 ------
>   drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c       | 1 -
>   drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c       | 1 -
>   drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c       | 1 -
>   6 files changed, 2 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> index 5c79da8..273c16b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> @@ -82,7 +82,7 @@ int amdgpu_bo_list_create(struct amdgpu_device *adev, struct drm_file *filp,
>   
>   	kref_init(&list->refcount);
>   	list->gds_obj = adev->gds.gds_gfx_bo;
> -	list->gws_obj = adev->gds.gws_gfx_bo;
> +	list->gws_obj = NULL;
>   	list->oa_obj = adev->gds.oa_gfx_bo;
>   
>   	array = amdgpu_bo_list_array_entry(list, 0);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> index f89f573..7e5b4ba 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> @@ -39,13 +39,12 @@ struct amdgpu_gds {
>   	struct amdgpu_gds_asic_info	oa;
>   	uint32_t			gds_compute_max_wave_id;
>   
> -	/* At present, GDS, GWS and OA resources for gfx (graphics)
> +	/* At present, GDS and OA resources for gfx (graphics)
>   	 * is always pre-allocated and available for graphics operation.
>   	 * Such resource is shared between all gfx clients.
>   	 * TODO: move this operation to user space
>   	 * */
>   	struct amdgpu_bo*		gds_gfx_bo;
> -	struct amdgpu_bo*		gws_gfx_bo;
>   	struct amdgpu_bo*		oa_gfx_bo;
>   };
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 38ce11e..b0e51e5 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1791,12 +1791,6 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>   		return r;
>   	}
>   
> -	r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
> -				    1, AMDGPU_GEM_DOMAIN_GWS,
> -				    &adev->gds.gws_gfx_bo, NULL, NULL);
> -	if (r)
> -		return r;
> -
>   	r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
>   			   adev->gds.oa.total_size);
>   	if (r) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> index a59e0fd..4d73456 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> @@ -4497,7 +4497,6 @@ static int gfx_v7_0_sw_fini(void *handle)
>   	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
>   
>   	amdgpu_bo_free_kernel(&adev->gds.oa_gfx_bo, NULL, NULL);
> -	amdgpu_bo_free_kernel(&adev->gds.gws_gfx_bo, NULL, NULL);
>   	amdgpu_bo_free_kernel(&adev->gds.gds_gfx_bo, NULL, NULL);
>   
>   	for (i = 0; i < adev->gfx.num_gfx_rings; i++)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> index 02955e6..e255754 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> @@ -2061,7 +2061,6 @@ static int gfx_v8_0_sw_fini(void *handle)
>   	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
>   
>   	amdgpu_bo_free_kernel(&adev->gds.oa_gfx_bo, NULL, NULL);
> -	amdgpu_bo_free_kernel(&adev->gds.gws_gfx_bo, NULL, NULL);
>   	amdgpu_bo_free_kernel(&adev->gds.gds_gfx_bo, NULL, NULL);
>   
>   	for (i = 0; i < adev->gfx.num_gfx_rings; i++)
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> index 7d7d287..41d1fc3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> @@ -1785,7 +1785,6 @@ static int gfx_v9_0_sw_fini(void *handle)
>   	}
>   
>   	amdgpu_bo_free_kernel(&adev->gds.oa_gfx_bo, NULL, NULL);
> -	amdgpu_bo_free_kernel(&adev->gds.gws_gfx_bo, NULL, NULL);
>   	amdgpu_bo_free_kernel(&adev->gds.gds_gfx_bo, NULL, NULL);
>   
>   	for (i = 0; i < adev->gfx.num_gfx_rings; i++)



More information about the amd-gfx mailing list