]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu/vce1: Check if VRAM address is lower than GART.
authorTimur Kristóf <timur.kristof@gmail.com>
Wed, 13 May 2026 20:04:11 +0000 (22:04 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 May 2026 16:10:31 +0000 (12:10 -0400)
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: 71aec08f80e7 ("amdgpu/vce: use amdgpu_gtt_mgr_alloc_entries")
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit f370ec9b164698a9ca1a7b59bfbea07f70df769d)

drivers/gpu/drm/amd/amdgpu/vce_v1_0.c

index 884f24be368592c67f0b8680e272c0de90e02b76..a49f11be74b20a1466335eecd668a775db4ce67b 100644 (file)
@@ -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);