Use correct size for message buffer = sizeof(struct ruvd_msg).
Add ITSCALING_TABLE_BUFFER size.

Signed-off-by: David Rosca <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
index 947a6cd45881..e2d0f23d48aa 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
@@ -918,15 +918,16 @@ static int amdgpu_uvd_cs_pass2(struct amdgpu_uvd_cs_ctx 
*ctx)
                                  ctx->buf_sizes[cmd]);
                        return -EINVAL;
                }
+       } else if (cmd == 0x204 || cmd == 0x206) {
+               unsigned int min_size = ctx->buf_sizes[cmd == 0x204 ? 5 : 4];
 
-       } else if (cmd == 0x206) {
-               if ((end - start) < ctx->buf_sizes[4]) {
+               if ((end - start) < min_size) {
                        DRM_ERROR("buffer (%d) to small (%d / %d)!\n", cmd,
                                          (unsigned int)(end - start),
-                                         ctx->buf_sizes[4]);
+                                         min_size);
                        return -EINVAL;
                }
-       } else if ((cmd != 0x100) && (cmd != 0x204)) {
+       } else if ((cmd != 0x100)) {
                DRM_ERROR("invalid UVD command %X!\n", cmd);
                return -EINVAL;
        }
@@ -1056,11 +1057,12 @@ int amdgpu_uvd_ring_parse_cs(struct amdgpu_cs_parser 
*parser,
 {
        struct amdgpu_uvd_cs_ctx ctx = {};
        unsigned int buf_sizes[] = {
-               [0x00000000]    =       2048,
+               [0x00000000]    =       3556,
                [0x00000001]    =       0xFFFFFFFF,
                [0x00000002]    =       0xFFFFFFFF,
                [0x00000003]    =       2048,
                [0x00000004]    =       0xFFFFFFFF,
+               [0x00000005]    =       992,
        };
        int r;
 
-- 
2.43.0

Reply via email to