SMU_TABLE_INIT(tables, SMU_TABLE_PMSTATUSLOG, SMU11_TOOL_SIZE,
                       PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM);
        SMU_TABLE_INIT(tables, SMU_TABLE_ACTIVITY_MONITOR_COEFF,
-                      sizeof(DpmActivityMonitorCoeffInt_t), PAGE_SIZE,
+                      sizeof(DpmActivityMonitorCoeffIntExternal_t), PAGE_SIZE,
                       AMDGPU_GEM_DOMAIN_VRAM);
 
        smu_table->metrics_table = kzalloc(sizeof(SmuMetrics_t), GFP_KERNEL);
 
 static int sienna_cichlid_get_power_profile_mode(struct smu_context *smu, char *buf)
 {
-       DpmActivityMonitorCoeffInt_t activity_monitor;
+       DpmActivityMonitorCoeffIntExternal_t activity_monitor_external;
+       DpmActivityMonitorCoeffInt_t *activity_monitor =
+               &(activity_monitor_external.DpmActivityMonitorCoeffInt);
        uint32_t i, size = 0;
        int16_t workload_type = 0;
        static const char *profile_name[] = {
 
                result = smu_cmn_update_table(smu,
                                          SMU_TABLE_ACTIVITY_MONITOR_COEFF, workload_type,
-                                         (void *)(&activity_monitor), false);
+                                         (void *)(&activity_monitor_external), false);
                if (result) {
                        dev_err(smu->adev->dev, "[%s] Failed to get activity monitor!", __func__);
                        return result;
                        " ",
                        0,
                        "GFXCLK",
-                       activity_monitor.Gfx_FPS,
-                       activity_monitor.Gfx_MinFreqStep,
-                       activity_monitor.Gfx_MinActiveFreqType,
-                       activity_monitor.Gfx_MinActiveFreq,
-                       activity_monitor.Gfx_BoosterFreqType,
-                       activity_monitor.Gfx_BoosterFreq,
-                       activity_monitor.Gfx_PD_Data_limit_c,
-                       activity_monitor.Gfx_PD_Data_error_coeff,
-                       activity_monitor.Gfx_PD_Data_error_rate_coeff);
+                       activity_monitor->Gfx_FPS,
+                       activity_monitor->Gfx_MinFreqStep,
+                       activity_monitor->Gfx_MinActiveFreqType,
+                       activity_monitor->Gfx_MinActiveFreq,
+                       activity_monitor->Gfx_BoosterFreqType,
+                       activity_monitor->Gfx_BoosterFreq,
+                       activity_monitor->Gfx_PD_Data_limit_c,
+                       activity_monitor->Gfx_PD_Data_error_coeff,
+                       activity_monitor->Gfx_PD_Data_error_rate_coeff);
 
                size += sprintf(buf + size, "%19s %d(%13s) %7d %7d %7d %7d %7d %7d %7d %7d %7d\n",
                        " ",
                        1,
                        "SOCCLK",
-                       activity_monitor.Fclk_FPS,
-                       activity_monitor.Fclk_MinFreqStep,
-                       activity_monitor.Fclk_MinActiveFreqType,
-                       activity_monitor.Fclk_MinActiveFreq,
-                       activity_monitor.Fclk_BoosterFreqType,
-                       activity_monitor.Fclk_BoosterFreq,
-                       activity_monitor.Fclk_PD_Data_limit_c,
-                       activity_monitor.Fclk_PD_Data_error_coeff,
-                       activity_monitor.Fclk_PD_Data_error_rate_coeff);
+                       activity_monitor->Fclk_FPS,
+                       activity_monitor->Fclk_MinFreqStep,
+                       activity_monitor->Fclk_MinActiveFreqType,
+                       activity_monitor->Fclk_MinActiveFreq,
+                       activity_monitor->Fclk_BoosterFreqType,
+                       activity_monitor->Fclk_BoosterFreq,
+                       activity_monitor->Fclk_PD_Data_limit_c,
+                       activity_monitor->Fclk_PD_Data_error_coeff,
+                       activity_monitor->Fclk_PD_Data_error_rate_coeff);
 
                size += sprintf(buf + size, "%19s %d(%13s) %7d %7d %7d %7d %7d %7d %7d %7d %7d\n",
                        " ",
                        2,
                        "MEMLK",
-                       activity_monitor.Mem_FPS,
-                       activity_monitor.Mem_MinFreqStep,
-                       activity_monitor.Mem_MinActiveFreqType,
-                       activity_monitor.Mem_MinActiveFreq,
-                       activity_monitor.Mem_BoosterFreqType,
-                       activity_monitor.Mem_BoosterFreq,
-                       activity_monitor.Mem_PD_Data_limit_c,
-                       activity_monitor.Mem_PD_Data_error_coeff,
-                       activity_monitor.Mem_PD_Data_error_rate_coeff);
+                       activity_monitor->Mem_FPS,
+                       activity_monitor->Mem_MinFreqStep,
+                       activity_monitor->Mem_MinActiveFreqType,
+                       activity_monitor->Mem_MinActiveFreq,
+                       activity_monitor->Mem_BoosterFreqType,
+                       activity_monitor->Mem_BoosterFreq,
+                       activity_monitor->Mem_PD_Data_limit_c,
+                       activity_monitor->Mem_PD_Data_error_coeff,
+                       activity_monitor->Mem_PD_Data_error_rate_coeff);
        }
 
        return size;
 
 static int sienna_cichlid_set_power_profile_mode(struct smu_context *smu, long *input, uint32_t size)
 {
-       DpmActivityMonitorCoeffInt_t activity_monitor;
+
+       DpmActivityMonitorCoeffIntExternal_t activity_monitor_external;
+       DpmActivityMonitorCoeffInt_t *activity_monitor =
+               &(activity_monitor_external.DpmActivityMonitorCoeffInt);
        int workload_type, ret = 0;
 
        smu->power_profile_mode = input[size];
 
                ret = smu_cmn_update_table(smu,
                                       SMU_TABLE_ACTIVITY_MONITOR_COEFF, WORKLOAD_PPLIB_CUSTOM_BIT,
-                                      (void *)(&activity_monitor), false);
+                                      (void *)(&activity_monitor_external), false);
                if (ret) {
                        dev_err(smu->adev->dev, "[%s] Failed to get activity monitor!", __func__);
                        return ret;
 
                switch (input[0]) {
                case 0: /* Gfxclk */
-                       activity_monitor.Gfx_FPS = input[1];
-                       activity_monitor.Gfx_MinFreqStep = input[2];
-                       activity_monitor.Gfx_MinActiveFreqType = input[3];
-                       activity_monitor.Gfx_MinActiveFreq = input[4];
-                       activity_monitor.Gfx_BoosterFreqType = input[5];
-                       activity_monitor.Gfx_BoosterFreq = input[6];
-                       activity_monitor.Gfx_PD_Data_limit_c = input[7];
-                       activity_monitor.Gfx_PD_Data_error_coeff = input[8];
-                       activity_monitor.Gfx_PD_Data_error_rate_coeff = input[9];
+                       activity_monitor->Gfx_FPS = input[1];
+                       activity_monitor->Gfx_MinFreqStep = input[2];
+                       activity_monitor->Gfx_MinActiveFreqType = input[3];
+                       activity_monitor->Gfx_MinActiveFreq = input[4];
+                       activity_monitor->Gfx_BoosterFreqType = input[5];
+                       activity_monitor->Gfx_BoosterFreq = input[6];
+                       activity_monitor->Gfx_PD_Data_limit_c = input[7];
+                       activity_monitor->Gfx_PD_Data_error_coeff = input[8];
+                       activity_monitor->Gfx_PD_Data_error_rate_coeff = input[9];
                        break;
                case 1: /* Socclk */
-                       activity_monitor.Fclk_FPS = input[1];
-                       activity_monitor.Fclk_MinFreqStep = input[2];
-                       activity_monitor.Fclk_MinActiveFreqType = input[3];
-                       activity_monitor.Fclk_MinActiveFreq = input[4];
-                       activity_monitor.Fclk_BoosterFreqType = input[5];
-                       activity_monitor.Fclk_BoosterFreq = input[6];
-                       activity_monitor.Fclk_PD_Data_limit_c = input[7];
-                       activity_monitor.Fclk_PD_Data_error_coeff = input[8];
-                       activity_monitor.Fclk_PD_Data_error_rate_coeff = input[9];
+                       activity_monitor->Fclk_FPS = input[1];
+                       activity_monitor->Fclk_MinFreqStep = input[2];
+                       activity_monitor->Fclk_MinActiveFreqType = input[3];
+                       activity_monitor->Fclk_MinActiveFreq = input[4];
+                       activity_monitor->Fclk_BoosterFreqType = input[5];
+                       activity_monitor->Fclk_BoosterFreq = input[6];
+                       activity_monitor->Fclk_PD_Data_limit_c = input[7];
+                       activity_monitor->Fclk_PD_Data_error_coeff = input[8];
+                       activity_monitor->Fclk_PD_Data_error_rate_coeff = input[9];
                        break;
                case 2: /* Memlk */
-                       activity_monitor.Mem_FPS = input[1];
-                       activity_monitor.Mem_MinFreqStep = input[2];
-                       activity_monitor.Mem_MinActiveFreqType = input[3];
-                       activity_monitor.Mem_MinActiveFreq = input[4];
-                       activity_monitor.Mem_BoosterFreqType = input[5];
-                       activity_monitor.Mem_BoosterFreq = input[6];
-                       activity_monitor.Mem_PD_Data_limit_c = input[7];
-                       activity_monitor.Mem_PD_Data_error_coeff = input[8];
-                       activity_monitor.Mem_PD_Data_error_rate_coeff = input[9];
+                       activity_monitor->Mem_FPS = input[1];
+                       activity_monitor->Mem_MinFreqStep = input[2];
+                       activity_monitor->Mem_MinActiveFreqType = input[3];
+                       activity_monitor->Mem_MinActiveFreq = input[4];
+                       activity_monitor->Mem_BoosterFreqType = input[5];
+                       activity_monitor->Mem_BoosterFreq = input[6];
+                       activity_monitor->Mem_PD_Data_limit_c = input[7];
+                       activity_monitor->Mem_PD_Data_error_coeff = input[8];
+                       activity_monitor->Mem_PD_Data_error_rate_coeff = input[9];
                        break;
                }
 
                ret = smu_cmn_update_table(smu,
                                       SMU_TABLE_ACTIVITY_MONITOR_COEFF, WORKLOAD_PPLIB_CUSTOM_BIT,
-                                      (void *)(&activity_monitor), true);
+                                      (void *)(&activity_monitor_external), true);
                if (ret) {
                        dev_err(smu->adev->dev, "[%s] Failed to set activity monitor!", __func__);
                        return ret;