]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu/vce3: Fix VCE 3 firmware size and offsets
authorTimur Kristóf <timur.kristof@gmail.com>
Wed, 13 May 2026 20:04:16 +0000 (22:04 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 May 2026 16:11:07 +0000 (12:11 -0400)
The VCPU BO contains the actual FW at an offset, but
it was not calculated into the VCPU BO size.
Subtract this from the FW size to make sure there is
no out of bounds access.

This may fix VM faults when using VCE 3.

Cc: John Olender <john.olender@gmail.com>
Fixes: e98226221467 ("drm/amdgpu: recalculate VCE firmware BO size")
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 15c369257bd85f47a514744f960c5a51c867716f)

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

index 03d79e464f04f0580e1cb83b8bfde4d54d7d931f..c69f7d82060f0305b379a2286b02250279254b86 100644 (file)
@@ -574,7 +574,7 @@ static void vce_v3_0_mc_resume(struct amdgpu_device *adev, int idx)
        } else
                WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR, (adev->vce.gpu_addr >> 8));
        offset = AMDGPU_VCE_FIRMWARE_OFFSET;
-       size = VCE_V3_0_FW_SIZE;
+       size = VCE_V3_0_FW_SIZE - AMDGPU_VCE_FIRMWARE_OFFSET;
        WREG32(mmVCE_VCPU_CACHE_OFFSET0, offset & 0x7fffffff);
        WREG32(mmVCE_VCPU_CACHE_SIZE0, size);