On Fri, Jun 14, 2024 at 1:42 PM Mario Limonciello <mario.limonciello@xxxxxxx> wrote: > > This attribute is used to hint the length of flexible arrays to > compiler and sanitizers. > > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > .../drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h | 36 +++++++++--------- > drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h | 38 +++++++++---------- > 2 files changed, 37 insertions(+), 37 deletions(-) > > diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h > index 2cf2a7b12623..7711e892c31f 100644 > --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h > +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h > @@ -163,8 +163,8 @@ typedef struct _ATOM_Tonga_State { > > typedef struct _ATOM_Tonga_State_Array { > UCHAR ucRevId; > - UCHAR ucNumEntries; /* Number of entries. */ > - ATOM_Tonga_State entries[]; /* Dynamically allocate entries. */ > + UCHAR ucNumEntries; > + ATOM_Tonga_State entries[] __counted_by(ucNumEntries); > } ATOM_Tonga_State_Array; > > typedef struct _ATOM_Tonga_MCLK_Dependency_Record { > @@ -178,8 +178,8 @@ typedef struct _ATOM_Tonga_MCLK_Dependency_Record { > > typedef struct _ATOM_Tonga_MCLK_Dependency_Table { > UCHAR ucRevId; > - UCHAR ucNumEntries; /* Number of entries. */ > - ATOM_Tonga_MCLK_Dependency_Record entries[]; /* Dynamically allocate entries. */ > + UCHAR ucNumEntries; > + ATOM_Tonga_MCLK_Dependency_Record entries[] __counted_by(ucNumEntries); > } ATOM_Tonga_MCLK_Dependency_Table; > > typedef struct _ATOM_Tonga_SCLK_Dependency_Record { > @@ -193,8 +193,8 @@ typedef struct _ATOM_Tonga_SCLK_Dependency_Record { > > typedef struct _ATOM_Tonga_SCLK_Dependency_Table { > UCHAR ucRevId; > - UCHAR ucNumEntries; /* Number of entries. */ > - ATOM_Tonga_SCLK_Dependency_Record entries[]; /* Dynamically allocate entries. */ > + UCHAR ucNumEntries; > + ATOM_Tonga_SCLK_Dependency_Record entries[] __counted_by(ucNumEntries); > } ATOM_Tonga_SCLK_Dependency_Table; > > typedef struct _ATOM_Polaris_SCLK_Dependency_Record { > @@ -209,8 +209,8 @@ typedef struct _ATOM_Polaris_SCLK_Dependency_Record { > > typedef struct _ATOM_Polaris_SCLK_Dependency_Table { > UCHAR ucRevId; > - UCHAR ucNumEntries; /* Number of entries. */ > - ATOM_Polaris_SCLK_Dependency_Record entries[]; /* Dynamically allocate entries. */ > + UCHAR ucNumEntries; > + ATOM_Polaris_SCLK_Dependency_Record entries[] __counted_by(ucNumEntries); > } ATOM_Polaris_SCLK_Dependency_Table; > > typedef struct _ATOM_Tonga_PCIE_Record { > @@ -221,8 +221,8 @@ typedef struct _ATOM_Tonga_PCIE_Record { > > typedef struct _ATOM_Tonga_PCIE_Table { > UCHAR ucRevId; > - UCHAR ucNumEntries; /* Number of entries. */ > - ATOM_Tonga_PCIE_Record entries[]; /* Dynamically allocate entries. */ > + UCHAR ucNumEntries; > + ATOM_Tonga_PCIE_Record entries[] __counted_by(ucNumEntries); > } ATOM_Tonga_PCIE_Table; > > typedef struct _ATOM_Polaris10_PCIE_Record { > @@ -234,8 +234,8 @@ typedef struct _ATOM_Polaris10_PCIE_Record { > > typedef struct _ATOM_Polaris10_PCIE_Table { > UCHAR ucRevId; > - UCHAR ucNumEntries; /* Number of entries. */ > - ATOM_Polaris10_PCIE_Record entries[]; /* Dynamically allocate entries. */ > + UCHAR ucNumEntries; > + ATOM_Polaris10_PCIE_Record entries[] __counted_by(ucNumEntries); > } ATOM_Polaris10_PCIE_Table; > > > @@ -251,8 +251,8 @@ typedef struct _ATOM_Tonga_MM_Dependency_Record { > > typedef struct _ATOM_Tonga_MM_Dependency_Table { > UCHAR ucRevId; > - UCHAR ucNumEntries; /* Number of entries. */ > - ATOM_Tonga_MM_Dependency_Record entries[]; /* Dynamically allocate entries. */ > + UCHAR ucNumEntries; > + ATOM_Tonga_MM_Dependency_Record entries[] __counted_by(ucNumEntries); > } ATOM_Tonga_MM_Dependency_Table; > > typedef struct _ATOM_Tonga_Voltage_Lookup_Record { > @@ -264,8 +264,8 @@ typedef struct _ATOM_Tonga_Voltage_Lookup_Record { > > typedef struct _ATOM_Tonga_Voltage_Lookup_Table { > UCHAR ucRevId; > - UCHAR ucNumEntries; /* Number of entries. */ > - ATOM_Tonga_Voltage_Lookup_Record entries[]; /* Dynamically allocate entries. */ > + UCHAR ucNumEntries; > + ATOM_Tonga_Voltage_Lookup_Record entries[] __counted_by(ucNumEntries); > } ATOM_Tonga_Voltage_Lookup_Table; > > typedef struct _ATOM_Tonga_Fan_Table { > @@ -367,7 +367,7 @@ typedef struct _ATOM_Tonga_VCE_State_Record { > typedef struct _ATOM_Tonga_VCE_State_Table { > UCHAR ucRevId; > UCHAR ucNumEntries; > - ATOM_Tonga_VCE_State_Record entries[]; > + ATOM_Tonga_VCE_State_Record entries[] __counted_by(ucNumEntries); > } ATOM_Tonga_VCE_State_Table; > > typedef struct _ATOM_Tonga_PowerTune_Table { > @@ -481,7 +481,7 @@ typedef struct _ATOM_Tonga_Hard_Limit_Record { > typedef struct _ATOM_Tonga_Hard_Limit_Table { > UCHAR ucRevId; > UCHAR ucNumEntries; > - ATOM_Tonga_Hard_Limit_Record entries[]; > + ATOM_Tonga_Hard_Limit_Record entries[] __counted_by(ucNumEntries); > } ATOM_Tonga_Hard_Limit_Table; > > typedef struct _ATOM_Tonga_GPIO_Table { > diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h > index 69928a4a074b..9118fcddbf11 100644 > --- a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h > +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h > @@ -60,7 +60,7 @@ struct vi_dpm_level { > > struct vi_dpm_table { > uint32_t count; > - struct vi_dpm_level dpm_level[]; > + struct vi_dpm_level dpm_level[] __counted_by(count); > }; > > #define PCIE_PERF_REQ_REMOVE_REGISTRY 0 > @@ -91,7 +91,7 @@ struct phm_set_power_state_input { > > struct phm_clock_array { > uint32_t count; > - uint32_t values[]; > + uint32_t values[] __counted_by(count); > }; > > struct phm_clock_voltage_dependency_record { > @@ -122,8 +122,8 @@ struct phm_acpclock_voltage_dependency_record { > }; > > struct phm_clock_voltage_dependency_table { > - uint32_t count; /* Number of entries. */ > - struct phm_clock_voltage_dependency_record entries[]; /* Dynamically allocate count entries. */ > + uint32_t count; > + struct phm_clock_voltage_dependency_record entries[] __counted_by(count); > }; > > struct phm_phase_shedding_limits_record { > @@ -140,7 +140,7 @@ struct phm_uvd_clock_voltage_dependency_record { > > struct phm_uvd_clock_voltage_dependency_table { > uint8_t count; > - struct phm_uvd_clock_voltage_dependency_record entries[]; > + struct phm_uvd_clock_voltage_dependency_record entries[] __counted_by(count); > }; > > struct phm_acp_clock_voltage_dependency_record { > @@ -150,7 +150,7 @@ struct phm_acp_clock_voltage_dependency_record { > > struct phm_acp_clock_voltage_dependency_table { > uint32_t count; > - struct phm_acp_clock_voltage_dependency_record entries[]; > + struct phm_acp_clock_voltage_dependency_record entries[] __counted_by(count); > }; > > struct phm_vce_clock_voltage_dependency_record { > @@ -160,33 +160,33 @@ struct phm_vce_clock_voltage_dependency_record { > }; > > struct phm_phase_shedding_limits_table { > - uint32_t count; > - struct phm_phase_shedding_limits_record entries[]; > + uint32_t count; > + struct phm_phase_shedding_limits_record entries[] __counted_by(count); > }; > > struct phm_vceclock_voltage_dependency_table { > - uint8_t count; /* Number of entries. */ > - struct phm_vceclock_voltage_dependency_record entries[1]; /* Dynamically allocate count entries. */ > + uint8_t count; > + struct phm_vceclock_voltage_dependency_record entries[] __counted_by(count); > }; > > struct phm_uvdclock_voltage_dependency_table { > - uint8_t count; /* Number of entries. */ > - struct phm_uvdclock_voltage_dependency_record entries[1]; /* Dynamically allocate count entries. */ > + uint8_t count; > + struct phm_uvdclock_voltage_dependency_record entries[] __counted_by(count); > }; > > struct phm_samuclock_voltage_dependency_table { > - uint8_t count; /* Number of entries. */ > - struct phm_samuclock_voltage_dependency_record entries[1]; /* Dynamically allocate count entries. */ > + uint8_t count; > + struct phm_samuclock_voltage_dependency_record entries[] __counted_by(count); > }; > > struct phm_acpclock_voltage_dependency_table { > - uint32_t count; /* Number of entries. */ > - struct phm_acpclock_voltage_dependency_record entries[1]; /* Dynamically allocate count entries. */ > + uint32_t count; > + struct phm_acpclock_voltage_dependency_record entries[] __counted_by(count); > }; > > struct phm_vce_clock_voltage_dependency_table { > uint8_t count; > - struct phm_vce_clock_voltage_dependency_record entries[]; > + struct phm_vce_clock_voltage_dependency_record entries[] __counted_by(count); > }; > > > @@ -393,7 +393,7 @@ union phm_cac_leakage_record { > > struct phm_cac_leakage_table { > uint32_t count; > - union phm_cac_leakage_record entries[]; > + union phm_cac_leakage_record entries[] __counted_by(count); > }; > > struct phm_samu_clock_voltage_dependency_record { > @@ -404,7 +404,7 @@ struct phm_samu_clock_voltage_dependency_record { > > struct phm_samu_clock_voltage_dependency_table { > uint8_t count; > - struct phm_samu_clock_voltage_dependency_record entries[]; > + struct phm_samu_clock_voltage_dependency_record entries[] __counted_by(count); > }; > > struct phm_cac_tdp_table { > -- > 2.43.0 >