From: YiPeng Chai Date: Thu, 26 Feb 2026 09:56:26 +0000 (+0800) Subject: drm/amdgpu: Fix static assertion failure issue X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7783a8bf065461c1eecaae5ab4421dd4d895f72b;p=thirdparty%2Fkernel%2Flinux.git 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 Closes: https://lore.kernel.org/oe-kbuild-all/202602261700.rVOLIw4l-lkp@intel.com/ Signed-off-by: YiPeng Chai Reviewed-by: Tao Zhou Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h index 4870c03627df1..a841f342a3ebb 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 309cdf595b6b2..c83357307c558 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;