Module: Mesa Branch: main Commit: b354ceebaa36c8d4c6d0441d39dc81159053a569 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b354ceebaa36c8d4c6d0441d39dc81159053a569
Author: Assadian, Navid <navid.assad...@amd.com> Date: Fri Dec 1 13:55:59 2023 -0500 amd/vpelib: Use uint64 for buffer size Reviewed-by: Roy Chan <roy.c...@amd.com> Acked-by: Alan Liu <haoping....@amd.com> Signed-off-by: Navid Assadian <navid.assad...@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26841> --- src/amd/vpelib/inc/vpe_types.h | 2 +- src/amd/vpelib/src/chip/vpe10/vpe10_resource.c | 4 ++-- src/amd/vpelib/src/core/config_writer.c | 18 ++++++++++-------- src/amd/vpelib/src/core/inc/config_writer.h | 2 +- src/amd/vpelib/src/core/inc/vpe_priv.h | 2 +- src/amd/vpelib/src/core/plane_desc_writer.c | 6 +++--- src/amd/vpelib/src/core/vpe_desc_writer.c | 6 +++--- src/amd/vpelib/src/core/vpelib.c | 8 ++++---- 8 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/amd/vpelib/inc/vpe_types.h b/src/amd/vpelib/inc/vpe_types.h index 29d8520f663..56d67c4c22d 100644 --- a/src/amd/vpelib/inc/vpe_types.h +++ b/src/amd/vpelib/inc/vpe_types.h @@ -614,7 +614,7 @@ struct vpe_bufs_req { struct vpe_buf { uint64_t gpu_va; /**< GPU start address of the buffer */ uint64_t cpu_va; - int64_t size; + uint64_t size; bool tmz; /**< allocated from tmz */ }; diff --git a/src/amd/vpelib/src/chip/vpe10/vpe10_resource.c b/src/amd/vpelib/src/chip/vpe10/vpe10_resource.c index fc53c505bbf..188fc925d4d 100644 --- a/src/amd/vpelib/src/chip/vpe10/vpe10_resource.c +++ b/src/amd/vpelib/src/chip/vpe10/vpe10_resource.c @@ -655,7 +655,7 @@ static void build_clamping_params( } static void frontend_config_callback( - void *ctx, uint64_t cfg_base_gpu, uint64_t cfg_base_cpu, int64_t size) + void *ctx, uint64_t cfg_base_gpu, uint64_t cfg_base_cpu, uint64_t size) { struct config_frontend_cb_ctx *cb_ctx = (struct config_frontend_cb_ctx *)ctx; struct vpe_priv *vpe_priv = cb_ctx->vpe_priv; @@ -781,7 +781,7 @@ int32_t vpe10_program_frontend(struct vpe_priv *vpe_priv, uint32_t pipe_idx, uin } static void backend_config_callback( - void *ctx, uint64_t cfg_base_gpu, uint64_t cfg_base_cpu, int64_t size) + void *ctx, uint64_t cfg_base_gpu, uint64_t cfg_base_cpu, uint64_t size) { struct config_backend_cb_ctx *cb_ctx = (struct config_backend_cb_ctx *)ctx; struct vpe_priv *vpe_priv = cb_ctx->vpe_priv; diff --git a/src/amd/vpelib/src/core/config_writer.c b/src/amd/vpelib/src/core/config_writer.c index aa56a1810bd..2b493b151fc 100644 --- a/src/amd/vpelib/src/core/config_writer.c +++ b/src/amd/vpelib/src/core/config_writer.c @@ -57,7 +57,7 @@ static inline void config_writer_new(struct config_writer *writer) return; /* Buffer does not have enough space to write */ - if (writer->buf->size < (int64_t)sizeof(uint32_t)) { + if (writer->buf->size < sizeof(uint32_t)) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } @@ -121,7 +121,7 @@ void config_writer_fill(struct config_writer *writer, uint32_t value) } /* Buffer does not have enough space to write */ - if (writer->buf->size < (int64_t)sizeof(uint32_t)) { + if (writer->buf->size < sizeof(uint32_t)) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } @@ -138,6 +138,7 @@ void config_writer_fill_direct_config_packet_header( { uint32_t *cmd_space; uint64_t size = writer->buf->cpu_va - writer->base_cpu_va; + uint64_t w_size = sizeof(uint32_t); VPE_ASSERT(writer->type == CONFIG_TYPE_DIRECT); @@ -155,16 +156,16 @@ void config_writer_fill_direct_config_packet_header( } /* Buffer does not have enough space to write */ - if (writer->buf->size < (int64_t)sizeof(uint32_t)) { + if (writer->buf->size < w_size) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } cmd_space = (uint32_t *)(uintptr_t)writer->buf->cpu_va; *cmd_space++ = packet->u32all; - writer->buf->cpu_va += sizeof(uint32_t); - writer->buf->gpu_va += sizeof(uint32_t); - writer->buf->size -= sizeof(uint32_t); + writer->buf->cpu_va += w_size; + writer->buf->gpu_va += w_size; + writer->buf->size -= w_size; } void config_writer_fill_direct_config_packet( @@ -172,6 +173,7 @@ void config_writer_fill_direct_config_packet( { uint32_t *cmd_space; uint64_t size = writer->buf->cpu_va - writer->base_cpu_va; + uint64_t w_size = 2 * sizeof(uint32_t); VPE_ASSERT(writer->type == CONFIG_TYPE_DIRECT); VPE_ASSERT(packet->bits.VPEP_CONFIG_DATA_SIZE == 0); @@ -188,7 +190,7 @@ void config_writer_fill_direct_config_packet( config_writer_new(writer); } - if (writer->buf->size < (int64_t)(2 * sizeof(uint32_t))) { + if (writer->buf->size < w_size) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } @@ -228,7 +230,7 @@ void config_writer_fill_indirect_destination(struct config_writer *writer, void config_writer_complete(struct config_writer *writer) { uint32_t *cmd_space = (uint32_t *)(uintptr_t)writer->base_cpu_va; - uint32_t size = (uint32_t)(writer->buf->cpu_va - writer->base_cpu_va); + uint64_t size = writer->buf->cpu_va - writer->base_cpu_va; if (writer->status != VPE_STATUS_OK) return; diff --git a/src/amd/vpelib/src/core/inc/config_writer.h b/src/amd/vpelib/src/core/inc/config_writer.h index 59512d17224..1c233c873f6 100644 --- a/src/amd/vpelib/src/core/inc/config_writer.h +++ b/src/amd/vpelib/src/core/inc/config_writer.h @@ -43,7 +43,7 @@ enum config_type { }; typedef void (*config_callback_t)( - void *ctx, uint64_t cfg_base_gpu, uint64_t cfg_base_cpu, int64_t size); + void *ctx, uint64_t cfg_base_gpu, uint64_t cfg_base_cpu, uint64_t size); #define MAX_CONFIG_PACKET_DATA_SIZE_DWORD 0x01000 diff --git a/src/amd/vpelib/src/core/inc/vpe_priv.h b/src/amd/vpelib/src/core/inc/vpe_priv.h index aa3fa0bd57f..d144c986207 100644 --- a/src/amd/vpelib/src/core/inc/vpe_priv.h +++ b/src/amd/vpelib/src/core/inc/vpe_priv.h @@ -104,7 +104,7 @@ struct vpe_cmd_info { struct config_record { uint64_t config_base_addr; - int64_t config_size; + uint64_t config_size; }; /** represents a stream input, i.e. common to all segments */ diff --git a/src/amd/vpelib/src/core/plane_desc_writer.c b/src/amd/vpelib/src/core/plane_desc_writer.c index 9eeb9b3fea1..d7e4dfc5fae 100644 --- a/src/amd/vpelib/src/core/plane_desc_writer.c +++ b/src/amd/vpelib/src/core/plane_desc_writer.c @@ -40,7 +40,7 @@ void plane_desc_writer_init(struct plane_desc_writer *writer, struct vpe_buf *bu writer->num_dst = 0; /* Buffer does not have enough space to write */ - if (buf->size < (int64_t)size) { + if (buf->size < size) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } @@ -65,7 +65,7 @@ void plane_desc_writer_add_source( return; /* Buffer does not have enough space to write */ - if (writer->buf->size < (int64_t)size) { + if (writer->buf->size < size) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } @@ -109,7 +109,7 @@ void plane_desc_writer_add_destination( return; /* Buffer does not have enough space to write */ - if (writer->buf->size < (int64_t)size) { + if (writer->buf->size < size) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } diff --git a/src/amd/vpelib/src/core/vpe_desc_writer.c b/src/amd/vpelib/src/core/vpe_desc_writer.c index d3690cc7c4a..53386fe36a1 100644 --- a/src/amd/vpelib/src/core/vpe_desc_writer.c +++ b/src/amd/vpelib/src/core/vpe_desc_writer.c @@ -40,7 +40,7 @@ void vpe_desc_writer_init(struct vpe_desc_writer *writer, struct vpe_buf *buf, i writer->plane_desc_added = false; writer->status = VPE_STATUS_OK; - if (buf->size < (int64_t)size) { + if (buf->size < size) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } @@ -63,7 +63,7 @@ void vpe_desc_writer_add_plane_desc( return; /* Buffer does not have enough space to write */ - if (writer->buf->size < (int64_t)size) { + if (writer->buf->size < size) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } @@ -95,7 +95,7 @@ void vpe_desc_writer_add_config_desc( return; /* Buffer does not have enough space to write */ - if (writer->buf->size < (int64_t)size) { + if (writer->buf->size < size) { writer->status = VPE_STATUS_BUFFER_OVERFLOW; return; } diff --git a/src/amd/vpelib/src/core/vpelib.c b/src/amd/vpelib/src/core/vpelib.c index f3a431fe8db..d78f457f419 100644 --- a/src/amd/vpelib/src/core/vpelib.c +++ b/src/amd/vpelib/src/core/vpelib.c @@ -549,11 +549,11 @@ enum vpe_status vpe_build_commands( * becaues the supported check is already passed * and the caller can come again with correct buffer size. */ - bufs->cmd_buf.size = (int64_t)vpe_priv->bufs_required.cmd_buf_size; - bufs->emb_buf.size = (int64_t)vpe_priv->bufs_required.emb_buf_size; + bufs->cmd_buf.size = vpe_priv->bufs_required.cmd_buf_size; + bufs->emb_buf.size = vpe_priv->bufs_required.emb_buf_size; return VPE_STATUS_OK; - } else if ((bufs->cmd_buf.size < (int32_t)vpe_priv->bufs_required.cmd_buf_size) || - (bufs->emb_buf.size < (int32_t)vpe_priv->bufs_required.emb_buf_size)) { + } else if ((bufs->cmd_buf.size < vpe_priv->bufs_required.cmd_buf_size) || + (bufs->emb_buf.size < vpe_priv->bufs_required.emb_buf_size)) { status = VPE_STATUS_INVALID_BUFFER_SIZE; } }