Commit eb0b5d6f authored by Alex Deucher's avatar Alex Deucher
Browse files

Revert "drm/[radeon|amdgpu]: Replace one-element array and use struct_size() helper"



This reverts commit 4541ea81.

This changes structs used by the hardware and breaks dpm on some cards.

Acked-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f86c9b8b
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -5715,9 +5715,10 @@ static int si_upload_sw_state(struct amdgpu_device *adev,
	int ret;
	u32 address = si_pi->state_table_start +
		offsetof(SISLANDS_SMC_STATETABLE, driverState);
	u32 state_size = sizeof(SISLANDS_SMC_SWSTATE) +
		((new_state->performance_level_count - 1) *
		 sizeof(SISLANDS_SMC_HW_PERFORMANCE_LEVEL));
	SISLANDS_SMC_SWSTATE *smc_state = &si_pi->smc_statetable.driverState;
	size_t state_size = struct_size(smc_state, levels,
					new_state->performance_level_count);

	memset(smc_state, 0, state_size);

+1 −1
Original line number Diff line number Diff line
@@ -186,7 +186,7 @@ struct SISLANDS_SMC_SWSTATE
    uint8_t                             levelCount;
    uint8_t                             padding2;
    uint8_t                             padding3;
    SISLANDS_SMC_HW_PERFORMANCE_LEVEL   levels[];
    SISLANDS_SMC_HW_PERFORMANCE_LEVEL   levels[1];
};

typedef struct SISLANDS_SMC_SWSTATE SISLANDS_SMC_SWSTATE;
+3 −2
Original line number Diff line number Diff line
@@ -5253,9 +5253,10 @@ static int si_upload_sw_state(struct radeon_device *rdev,
	int ret;
	u32 address = si_pi->state_table_start +
		offsetof(SISLANDS_SMC_STATETABLE, driverState);
	u32 state_size = sizeof(SISLANDS_SMC_SWSTATE) +
		((new_state->performance_level_count - 1) *
		 sizeof(SISLANDS_SMC_HW_PERFORMANCE_LEVEL));
	SISLANDS_SMC_SWSTATE *smc_state = &si_pi->smc_statetable.driverState;
	size_t state_size = struct_size(smc_state, levels,
					new_state->performance_level_count);

	memset(smc_state, 0, state_size);