forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/gpu/drm/radeon/ni_dpm.c
....@@ -21,15 +21,16 @@
2121 *
2222 */
2323
24
-#include <drm/drmP.h>
25
-#include "radeon.h"
26
-#include "radeon_asic.h"
24
+#include <linux/math64.h>
25
+#include <linux/pci.h>
26
+#include <linux/seq_file.h>
27
+
28
+#include "atom.h"
29
+#include "ni_dpm.h"
2730 #include "nid.h"
2831 #include "r600_dpm.h"
29
-#include "ni_dpm.h"
30
-#include "atom.h"
31
-#include <linux/math64.h>
32
-#include <linux/seq_file.h>
32
+#include "radeon.h"
33
+#include "radeon_asic.h"
3334
3435 #define MC_CG_ARB_FREQ_F0 0x0a
3536 #define MC_CG_ARB_FREQ_F1 0x0b
....@@ -2684,11 +2685,12 @@
26842685 struct rv7xx_power_info *pi = rv770_get_pi(rdev);
26852686 u16 address = pi->state_table_start +
26862687 offsetof(NISLANDS_SMC_STATETABLE, driverState);
2687
- u16 state_size = sizeof(NISLANDS_SMC_SWSTATE) +
2688
- ((NISLANDS_MAX_SMC_PERFORMANCE_LEVELS_PER_SWSTATE - 1) * sizeof(NISLANDS_SMC_HW_PERFORMANCE_LEVEL));
2688
+ NISLANDS_SMC_SWSTATE *smc_state;
2689
+ size_t state_size = struct_size(smc_state, levels,
2690
+ NISLANDS_MAX_SMC_PERFORMANCE_LEVELS_PER_SWSTATE);
26892691 int ret;
2690
- NISLANDS_SMC_SWSTATE *smc_state = kzalloc(state_size, GFP_KERNEL);
26912692
2693
+ smc_state = kzalloc(state_size, GFP_KERNEL);
26922694 if (smc_state == NULL)
26932695 return -ENOMEM;
26942696
....@@ -2738,10 +2740,10 @@
27382740 table->mc_reg_table_entry[k].mc_data[j] |= 0x100;
27392741 }
27402742 j++;
2741
- if (j > SMC_NISLANDS_MC_REGISTER_ARRAY_SIZE)
2742
- return -EINVAL;
27432743 break;
27442744 case MC_SEQ_RESERVE_M >> 2:
2745
+ if (j >= SMC_NISLANDS_MC_REGISTER_ARRAY_SIZE)
2746
+ return -EINVAL;
27452747 temp_reg = RREG32(MC_PMG_CMD_MRS1);
27462748 table->mc_reg_address[j].s1 = MC_PMG_CMD_MRS1 >> 2;
27472749 table->mc_reg_address[j].s0 = MC_SEQ_PMG_CMD_MRS1_LP >> 2;
....@@ -2750,8 +2752,6 @@
27502752 (temp_reg & 0xffff0000) |
27512753 (table->mc_reg_table_entry[k].mc_data[i] & 0x0000ffff);
27522754 j++;
2753
- if (j > SMC_NISLANDS_MC_REGISTER_ARRAY_SIZE)
2754
- return -EINVAL;
27552755 break;
27562756 default:
27572757 break;