On 2026-07-09 18:33, Alex Hung wrote:
> Building for ARCH=um with W=1 C=1 makes the "amd_sriov_msg_vf2pf_info
> must be 1 KB" static assertion in amdgv_sriovmsg.h fail under sparse,
> exposed after UML builds were enabled.
>
> Sparse does not honor #pragma pack(push, 1) for the nested ucode_info
> struct, so it sizes each element as 8 bytes instead of 5 and computes
> the surrounding structure as larger than 1 KB. The compilers get this
> right via the enclosing pragma, but the annotation should be explicit.
>
> Fixes: af3f2f5db265 ("drm/amdgpu: Remove UML build exclusion from Kconfig")
> Reported-by: kernel test robot <[email protected]>
> Closes:
> https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Cc: Harry Wentland <[email protected]>
> Assisted-by: Copilot:Claude-Opus-4.8
> Signed-off-by: Alex Hung <[email protected]>
Reviewed-by: Harry Wentland <[email protected]>
Harry
> ---
> drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> index d80f01c0e754..b02561f41b58 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> @@ -379,7 +379,7 @@ struct amd_sriov_msg_vf2pf_info {
> struct {
> uint8_t id;
> uint32_t version;
> - } ucode_info[AMD_SRIOV_MSG_RESERVE_UCODE];
> + } __packed ucode_info[AMD_SRIOV_MSG_RESERVE_UCODE];
> uint64_t dummy_page_addr;
> /* FB allocated for guest MES to record UQ info */
> uint64_t mes_info_addr;