From: Mukul Joshi <[email protected]>

NPA DMA-Bufs can only be imported on the same device as the
original BO. In source-identification mode NPA addresses are
importer-specific. Each GPU needs to import the UALink handle
by themselves. Sharing the NPA addresses between devices is
meaningless and potentially dangerous. Put controls to ensure
this is not violated.

Signed-off-by: Mukul Joshi <[email protected]>
Reviewed-by: Felix Kuehling <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
index b33c300e26e2e..b4fbd8a407f15 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
@@ -558,6 +558,11 @@ struct drm_gem_object *amdgpu_gem_prime_import(struct 
drm_device *dev,
                         */
                        drm_gem_object_get(obj);
                        return obj;
+               } else {
+                       struct ttm_resource *mem = 
gem_to_amdgpu_bo(obj)->tbo.resource;
+                       /* NPA DMA-buf can only be imported on the same device. 
*/
+                       if (mem && mem->mem_type == AMDGPU_PL_NPA)
+                               return ERR_PTR(-EPERM);
                }
        }
 
-- 
2.55.0

Reply via email to