[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