[PATCH 2/3] amd/amdgpu: Inherit coherence flags base on original BO flags

Felix Kuehling felix.kuehling at amd.com
Tue Apr 4 13:52:04 UTC 2023


Am 2023-04-04 um 05:56 schrieb Shane Xiao:
> For SG BO to DMA-map userptrs on other GPUs, the SG BO need inherit
> MTYPEs in PTEs from original BO.

Good catch. See two comments inline.


>
> If we set the flags, the device can be coherent with the CPUs and other GPUs.
>
> Signed-off-by: Shane Xiao <shane.xiao at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 +++++++++-
>   1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 33cda358cb9e..bcb0a7b32703 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -253,14 +253,22 @@ create_dmamap_sg_bo(struct amdgpu_device *adev,
>   {
>   	struct drm_gem_object *gem_obj;
>   	int ret, align;
> +	uint64_t flags = 0;
>   
>   	ret = amdgpu_bo_reserve(mem->bo, false);
>   	if (ret)
>   		return ret;
>   
>   	align = 1;
> +	if(mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_USERPTR)
> +	{
> +		flags |= mem->bo->flags &(AMDGPU_GEM_CREATE_CPU_GTT_USWC |

I think userptrs never use USWC because the pages are not allocated by 
the driver. You can drop this flag.


> +				AMDGPU_GEM_CREATE_COHERENT | AMDGPU_GEM_CREATE_UNCACHED);
> +		align = PAGE_SIZE;

Isn't a page alignment implicit anyway? I don't see why we need to use a 
different alignment for userptrs. If PAGE_SIZE is needed for this case, 
we can use the same for all cases We don't even need a local variable 
for this.

Regards,
   Felix


> +	}
> +
>   	ret = amdgpu_gem_object_create(adev, mem->bo->tbo.base.size, align,
> -			AMDGPU_GEM_DOMAIN_CPU, AMDGPU_GEM_CREATE_PREEMPTIBLE,
> +			AMDGPU_GEM_DOMAIN_CPU, AMDGPU_GEM_CREATE_PREEMPTIBLE | flags,
>   			ttm_bo_type_sg, mem->bo->tbo.base.resv, &gem_obj);
>   
>   	amdgpu_bo_unreserve(mem->bo);


More information about the amd-gfx mailing list