@@ -156,9 +156,6 @@ int smu_v13_0_12_tables_init(struct smu_context *smu)
156156{
157157 struct amdgpu_baseboard_temp_metrics_v1_0 * baseboard_temp_metrics ;
158158 struct amdgpu_gpuboard_temp_metrics_v1_0 * gpuboard_temp_metrics ;
159- struct smu_table_context * smu_table = & smu -> smu_table ;
160- struct smu_table * tables = smu_table -> tables ;
161- struct smu_table_cache * cache ;
162159 int ret ;
163160
164161 ret = smu_table_cache_init (smu , SMU_TABLE_PMFW_SYSTEM_METRICS ,
@@ -167,34 +164,37 @@ int smu_v13_0_12_tables_init(struct smu_context *smu)
167164 if (ret )
168165 return ret ;
169166
170- ret = smu_table_cache_init (smu , SMU_TABLE_BASEBOARD_TEMP_METRICS ,
171- sizeof (* baseboard_temp_metrics ), 50 );
167+ ret = smu_driver_table_init (smu ,
168+ SMU_DRIVER_TABLE_BASEBOARD_TEMP_METRICS ,
169+ sizeof (* baseboard_temp_metrics ), 50 );
172170 if (ret )
173171 return ret ;
174172 /* Initialize base board temperature metrics */
175- cache = & ( tables [ SMU_TABLE_BASEBOARD_TEMP_METRICS ]. cache );
176- baseboard_temp_metrics =
177- ( struct amdgpu_baseboard_temp_metrics_v1_0 * ) cache -> buffer ;
173+ baseboard_temp_metrics = ( struct amdgpu_baseboard_temp_metrics_v1_0 * )
174+ smu_driver_table_ptr ( smu ,
175+ SMU_DRIVER_TABLE_BASEBOARD_TEMP_METRICS ) ;
178176 smu_cmn_init_baseboard_temp_metrics (baseboard_temp_metrics , 1 , 0 );
179177 /* Initialize GPU board temperature metrics */
180- ret = smu_table_cache_init (smu , SMU_TABLE_GPUBOARD_TEMP_METRICS ,
181- sizeof (* gpuboard_temp_metrics ), 50 );
178+ ret = smu_driver_table_init (smu , SMU_DRIVER_TABLE_GPUBOARD_TEMP_METRICS ,
179+ sizeof (* gpuboard_temp_metrics ), 50 );
182180 if (ret ) {
183181 smu_table_cache_fini (smu , SMU_TABLE_PMFW_SYSTEM_METRICS );
184- smu_table_cache_fini (smu , SMU_TABLE_BASEBOARD_TEMP_METRICS );
182+ smu_driver_table_fini (smu ,
183+ SMU_DRIVER_TABLE_BASEBOARD_TEMP_METRICS );
185184 return ret ;
186185 }
187- cache = & (tables [SMU_TABLE_GPUBOARD_TEMP_METRICS ].cache );
188- gpuboard_temp_metrics = (struct amdgpu_gpuboard_temp_metrics_v1_0 * )cache -> buffer ;
186+ gpuboard_temp_metrics = (struct amdgpu_gpuboard_temp_metrics_v1_0 * )
187+ smu_driver_table_ptr (smu ,
188+ SMU_DRIVER_TABLE_GPUBOARD_TEMP_METRICS );
189189 smu_cmn_init_gpuboard_temp_metrics (gpuboard_temp_metrics , 1 , 0 );
190190
191191 return 0 ;
192192}
193193
194194void smu_v13_0_12_tables_fini (struct smu_context * smu )
195195{
196- smu_table_cache_fini (smu , SMU_TABLE_BASEBOARD_TEMP_METRICS );
197- smu_table_cache_fini (smu , SMU_TABLE_GPUBOARD_TEMP_METRICS );
196+ smu_driver_table_fini (smu , SMU_DRIVER_TABLE_BASEBOARD_TEMP_METRICS );
197+ smu_driver_table_fini (smu , SMU_DRIVER_TABLE_GPUBOARD_TEMP_METRICS );
198198 smu_table_cache_fini (smu , SMU_TABLE_PMFW_SYSTEM_METRICS );
199199}
200200
@@ -686,27 +686,25 @@ static ssize_t smu_v13_0_12_get_temp_metrics(struct smu_context *smu,
686686 struct amdgpu_gpuboard_temp_metrics_v1_0 * gpuboard_temp_metrics ;
687687 struct smu_table_context * smu_table = & smu -> smu_table ;
688688 struct smu_table * tables = smu_table -> tables ;
689+ enum smu_driver_table_id table_id ;
689690 SystemMetricsTable_t * metrics ;
690- struct smu_table * data_table ;
691691 struct smu_table * sys_table ;
692692 int ret , sensor_type ;
693693 u32 idx , sensors ;
694694 ssize_t size ;
695695
696696 if (type == SMU_TEMP_METRIC_BASEBOARD ) {
697697 /* Initialize base board temperature metrics */
698- data_table =
699- & smu -> smu_table .tables [SMU_TABLE_BASEBOARD_TEMP_METRICS ];
698+ table_id = SMU_DRIVER_TABLE_BASEBOARD_TEMP_METRICS ;
700699 baseboard_temp_metrics =
701700 (struct amdgpu_baseboard_temp_metrics_v1_0 * )
702- data_table -> cache . buffer ;
701+ smu_driver_table_ptr ( smu , table_id ) ;
703702 size = sizeof (* baseboard_temp_metrics );
704703 } else {
705- data_table =
706- & smu -> smu_table .tables [SMU_TABLE_GPUBOARD_TEMP_METRICS ];
704+ table_id = SMU_DRIVER_TABLE_GPUBOARD_TEMP_METRICS ;
707705 gpuboard_temp_metrics =
708706 (struct amdgpu_gpuboard_temp_metrics_v1_0 * )
709- data_table -> cache . buffer ;
707+ smu_driver_table_ptr ( smu , table_id ) ;
710708 size = sizeof (* baseboard_temp_metrics );
711709 }
712710
@@ -716,7 +714,7 @@ static ssize_t smu_v13_0_12_get_temp_metrics(struct smu_context *smu,
716714
717715 sys_table = & tables [SMU_TABLE_PMFW_SYSTEM_METRICS ];
718716 metrics = (SystemMetricsTable_t * )sys_table -> cache .buffer ;
719- smu_table_cache_update_time ( data_table , jiffies );
717+ smu_driver_table_update_cache_time ( smu , table_id );
720718
721719 if (type == SMU_TEMP_METRIC_GPUBOARD ) {
722720 gpuboard_temp_metrics -> accumulation_counter = metrics -> AccumulationCounter ;
@@ -762,7 +760,10 @@ static ssize_t smu_v13_0_12_get_temp_metrics(struct smu_context *smu,
762760 }
763761 }
764762
765- memcpy (table , data_table -> cache .buffer , size );
763+ if (type == SMU_TEMP_METRIC_BASEBOARD )
764+ memcpy (table , baseboard_temp_metrics , size );
765+ else
766+ memcpy (table , gpuboard_temp_metrics , size );
766767
767768 return size ;
768769}
0 commit comments