> On 26 Feb 2026, at 5:19 PM, YiPeng Chai <[email protected]> wrote:
> 
> Since the PAGE_SIZE is 8KB on sparc64, the size of
> structure amdsriov_ras_telemetry will exceed 64KB,
> so use absolute value to fix the buffer size.
> 
> Fixes the issue:
> drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:522:2: error: static
> assertion failed due to requirement 'sizeof(struct
> amdsriov_ras_telemetry) <= 64 << 10': amdsriov_ras_telemetry must be 64 KB
> |  sizeof(struct amdsriov_ras_telemetry) <=
> AMD_SRIOV_MSG_RAS_TELEMETRY_SIZE_KB_V1 << 10,
> drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h:522:40: note:
> expression evaluates to '115616 <= 65536'
> |   sizeof(struct amdsriov_ras_telemetry) <=
> AMD_SRIOV_MSG_RAS_TELEMETRY_SIZE_KB_V1 << 10,
> 
> Fixes: cb48a6b2b61d ("drm/amd/ras: use dedicated memory as vf ras command 
> buffer")
> 
> Reported-by: kernel test robot <[email protected]>
> Closes: 
> https://lore.kernel.org/oe-kbuild-all/[email protected]/
> 
> Signed-off-by: YiPeng Chai <[email protected]>
> ---

IBM CI has also reported the same issue, and tested this patch and it fixes the 
reported build issue.

Link to upstream report: 
https://lore.kernel.org/all/[email protected]/

Tested-by: Venkat Rao Bagalkote <[email protected]>

Regards,
Venkat.

> drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h           | 5 +++--
> drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c | 4 ++--
> 2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h 
> b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> index 4870c03627df..a841f342a3eb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> @@ -476,9 +476,10 @@ union amd_sriov_ras_host_push {
> struct amd_sriov_ras_chk_criti chk_criti;
> };
> 
> -#define AMD_SRIOV_UNIRAS_CMD_MAX_SIZE (PAGE_SIZE * 13)
> +#define AMD_SRIOV_UNIRAS_BLOCKS_BUF_SIZE 4096
> +#define AMD_SRIOV_UNIRAS_CMD_MAX_SIZE (4096 * 13)
> struct amd_sriov_uniras_shared_mem {
> - uint8_t blocks_ecc_buf[PAGE_SIZE];
> + uint8_t blocks_ecc_buf[AMD_SRIOV_UNIRAS_BLOCKS_BUF_SIZE];
> uint8_t cmd_buf[AMD_SRIOV_UNIRAS_CMD_MAX_SIZE];
> };
> 
> diff --git a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c 
> b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c
> index 3e8b500caec1..81553230dca4 100644
> --- a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c
> +++ b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c
> @@ -63,7 +63,7 @@ static int amdgpu_virt_ras_get_cmd_shared_mem(struct 
> ras_core_context *ras_core,
> ras_telemetry_offset);
> 
> if (cmd == RAS_CMD__GET_ALL_BLOCK_ECC_STATUS) {
> - if (mem_size > PAGE_SIZE)
> + if (mem_size > AMD_SRIOV_UNIRAS_BLOCKS_BUF_SIZE)
> return -ENOMEM;
> 
> shared_mem->cpu_addr = ras_telemetry_cpu->uniras_shared_mem.blocks_ecc_buf;
> @@ -504,7 +504,7 @@ int amdgpu_virt_ras_hw_init(struct amdgpu_device *adev)
> memset(blks_ecc, 0, sizeof(*blks_ecc));
> if (amdgpu_virt_ras_get_cmd_shared_mem(ras_mgr->ras_core,
> RAS_CMD__GET_ALL_BLOCK_ECC_STATUS,
> - PAGE_SIZE, &blks_ecc->shared_mem))
> + AMD_SRIOV_UNIRAS_BLOCKS_BUF_SIZE, &blks_ecc->shared_mem))
> return -ENOMEM;
> 
> return 0;
> -- 
> 2.43.0
> 

Reply via email to