Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: Use allowed_domains for pinning dmabufs

When determining the domains for pinning DMABufs, filter allowed_domains
and fail with a warning if VRAM is forbidden and GTT is not an allowed
domain.

Fixes: f5e7fabd1f5c ("drm/amdgpu: allow pinning DMA-bufs into VRAM if all importers can do P2P")
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Felix Kuehling <felix.kuehling@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Felix Kuehling and committed by
Alex Deucher
3940796a cb808ab8

+4 -1
+4 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
··· 77 77 { 78 78 struct dma_buf *dmabuf = attach->dmabuf; 79 79 struct amdgpu_bo *bo = gem_to_amdgpu_bo(dmabuf->priv); 80 - u32 domains = bo->preferred_domains; 80 + u32 domains = bo->allowed_domains; 81 81 82 82 dma_resv_assert_held(dmabuf->resv); 83 83 ··· 92 92 93 93 if (domains & AMDGPU_GEM_DOMAIN_VRAM) 94 94 bo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED; 95 + 96 + if (WARN_ON(!domains)) 97 + return -EINVAL; 95 98 96 99 return amdgpu_bo_pin(bo, domains); 97 100 }