drm/amd/pm: Use pointer type for typecheck()

typecheck creates local variables based on the type passed. That could
result in stack frame size warnings like below in certain configs:

drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_6_ppt.c:2885:1: error: the frame size of 8304 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]

Checking against the pointer type is sufficient for the purpose of
getting a diagnostic message during build time.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Palmer Dabbelt <palmer@dabbelt.com>
Tested-by: Palmer Dabbelt <palmer@dabbelt.com>
Link: https://lore.kernel.org/r/20250610212141.19445-1-palmer@dabbelt.com
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Lijo Lazar 2025-06-12 17:43:58 +05:30 committed by Alex Deucher
parent 594a774dc2
commit b49e3d7ca7

View File

@ -40,28 +40,29 @@
#define SMU_IH_INTERRUPT_CONTEXT_ID_FAN_ABNORMAL 0x8
#define SMU_IH_INTERRUPT_CONTEXT_ID_FAN_RECOVERY 0x9
#define smu_cmn_init_soft_gpu_metrics(ptr, frev, crev) \
do { \
typecheck(struct gpu_metrics_v##frev##_##crev, \
typeof(*(ptr))); \
struct metrics_table_header *header = \
(struct metrics_table_header *)(ptr); \
memset(header, 0xFF, sizeof(*(ptr))); \
header->format_revision = frev; \
header->content_revision = crev; \
header->structure_size = sizeof(*(ptr)); \
#define smu_cmn_init_soft_gpu_metrics(ptr, frev, crev) \
do { \
typecheck(struct gpu_metrics_v##frev##_##crev *, (ptr)); \
struct gpu_metrics_v##frev##_##crev *tmp = (ptr); \
struct metrics_table_header *header = \
(struct metrics_table_header *)tmp; \
memset(header, 0xFF, sizeof(*tmp)); \
header->format_revision = frev; \
header->content_revision = crev; \
header->structure_size = sizeof(*tmp); \
} while (0)
#define smu_cmn_init_partition_metrics(ptr, frev, crev) \
do { \
typecheck(struct amdgpu_partition_metrics_v##frev##_##crev, \
typeof(*(ptr))); \
struct metrics_table_header *header = \
(struct metrics_table_header *)(ptr); \
memset(header, 0xFF, sizeof(*(ptr))); \
header->format_revision = frev; \
header->content_revision = crev; \
header->structure_size = sizeof(*(ptr)); \
#define smu_cmn_init_partition_metrics(ptr, fr, cr) \
do { \
typecheck(struct amdgpu_partition_metrics_v##fr##_##cr *, \
(ptr)); \
struct amdgpu_partition_metrics_v##fr##_##cr *tmp = (ptr); \
struct metrics_table_header *header = \
(struct metrics_table_header *)tmp; \
memset(header, 0xFF, sizeof(*tmp)); \
header->format_revision = fr; \
header->content_revision = cr; \
header->structure_size = sizeof(*tmp); \
} while (0)
extern const int link_speed[];