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]>
---
 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;
-- 
2.43.0

Reply via email to