Am 2021-12-09 um 10:47 a.m. schrieb Philip Yang: > For userptr bo, if adev is not in IOMMU isolation mode, RAM direct map > to GPU, multiple GPUs use same system memory dma mapping address, they > can share the original mem->bo in attachment to reduce dma address array > memory usage. > > Signed-off-by: Philip Yang <Philip.Yang@xxxxxxx> The series is Reviewed-by: Felix Kuehling <Felix.Kuehling@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 ++++++---- > 1 file changed, 6 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 b8490789eef4..f9bab963a948 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > @@ -708,10 +708,12 @@ static int kfd_mem_attach(struct amdgpu_device *adev, struct kgd_mem *mem, > pr_debug("\t add VA 0x%llx - 0x%llx to vm %p\n", va, > va + bo_size, vm); > > - if (adev == bo_adev || (mem->domain == AMDGPU_GEM_DOMAIN_VRAM && > - amdgpu_xgmi_same_hive(adev, bo_adev))) { > - /* Mappings on the local GPU and VRAM mappings in the > - * local hive share the original BO > + if (adev == bo_adev || > + (amdgpu_ttm_tt_get_usermm(mem->bo->tbo.ttm) && adev->ram_is_direct_mapped) || > + (mem->domain == AMDGPU_GEM_DOMAIN_VRAM && amdgpu_xgmi_same_hive(adev, bo_adev))) { > + /* Mappings on the local GPU, or VRAM mappings in the > + * local hive, or userptr mapping IOMMU direct map mode > + * share the original BO > */ > attachment[i]->type = KFD_MEM_ATT_SHARED; > bo[i] = mem->bo;