Previously, I had assumed this was not possible
so it was OK to not handle it, but now we got a report
from a user who has a board that is configured this way.

When the VCPU BO is already located in a low 32-bit address
in VRAM (eg. when VRAM is mapped to the low address space),
don't do the workaround.

Fixes: 66a80158aa2a ("amdgpu/vce: use amdgpu_gtt_mgr_alloc_entries")
Signed-off-by: Timur Kristóf <[email protected]>
Reviewed-by: Christian König <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/vce_v1_0.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v1_0.c 
b/drivers/gpu/drm/amd/amdgpu/vce_v1_0.c
index 884f24be3685..a49f11be74b2 100644
--- a/drivers/gpu/drm/amd/amdgpu/vce_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vce_v1_0.c
@@ -542,6 +542,9 @@ static int vce_v1_0_ensure_vcpu_bo_32bit_addr(struct 
amdgpu_device *adev)
        u64 vce_gart_start_offs;
        int r;
 
+       if (adev->gmc.vram_start < adev->gmc.gart_start)
+               return amdgpu_bo_gpu_offset(adev->vce.vcpu_bo) <= 
max_vcpu_bo_addr ? 0 : -EINVAL;
+
        r = amdgpu_gtt_mgr_alloc_entries(&adev->mman.gtt_mgr,
                                         &adev->vce.gart_node, num_pages,
                                         DRM_MM_INSERT_LOW);
-- 
2.54.0

Reply via email to