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

Felix Kuehling felix.kuehling at amd.com
Wed Apr 5 20:28:10 UTC 2023


On 2023-04-05 11:31, Shane Xiao wrote:
> For SG BO to DMA-map userptrs on other GPUs, the SG BO need inherit
> MTYPEs in PTEs from original BO.
>
> If we set the flags, the device can be coherent with the CPUs and other GPUs.
>
> v2:
>    1. Drop unnecessary flags check
>    2. Remove local variable align
>
> Signed-off-by: Shane Xiao <shane.xiao at amd.com>

Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>


> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 12 ++++++++----
>   1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 2fbb9db64ad5..b181bb373783 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -271,15 +271,19 @@ create_dmamap_sg_bo(struct amdgpu_device *adev,
>   		 struct kgd_mem *mem, struct amdgpu_bo **bo_out)
>   {
>   	struct drm_gem_object *gem_obj;
> -	int ret, align;
> +	int ret;
> +	uint64_t flags = 0;
>   
>   	ret = amdgpu_bo_reserve(mem->bo, false);
>   	if (ret)
>   		return ret;
>   
> -	align = 1;
> -	ret = amdgpu_gem_object_create(adev, mem->bo->tbo.base.size, align,
> -			AMDGPU_GEM_DOMAIN_CPU, AMDGPU_GEM_CREATE_PREEMPTIBLE,
> +	if(mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_USERPTR)
> +		flags |= mem->bo->flags & (AMDGPU_GEM_CREATE_COHERENT |
> +					AMDGPU_GEM_CREATE_UNCACHED);
> +
> +	ret = amdgpu_gem_object_create(adev, mem->bo->tbo.base.size, 1,
> +			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