[AMD Official Use Only - AMD Internal Distribution Only]

Reviewed-by: Tao Zhou <[email protected]>

> -----Original Message-----
> From: Chai, Thomas <[email protected]>
> Sent: Thursday, February 26, 2026 7:50 PM
> To: [email protected]
> Cc: Zhang, Hawking <[email protected]>; Zhou1, Tao
> <[email protected]>; Li, Candice <[email protected]>; Yang, Stanley
> <[email protected]>; Su, Joe <[email protected]>; Chai, Thomas
> <[email protected]>; kernel test robot <[email protected]>
> Subject: [PATCH] drm/amdgpu: Fix static assertion failure issue
>
> 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]>
> ---
>  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