]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/pm: Use smu vram copy in SMUv15
authorLijo Lazar <lijo.lazar@amd.com>
Fri, 27 Mar 2026 07:50:40 +0000 (13:20 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 3 Apr 2026 17:52:10 +0000 (13:52 -0400)
Use smu vram copy wrapper function for vram copy operations in
SMUv15.0.8

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/smu15/smu_v15_0_8_ppt.c

index cc2babc6a341a5c2092b8048ca2e7e213190e351..1682ef1338f1321ef7092fd8f799aad223976f58 100644 (file)
@@ -344,7 +344,12 @@ static int smu_v15_0_8_get_metrics_table_internal(struct smu_context *smu, uint3
                }
 
                amdgpu_device_invalidate_hdp(smu->adev, NULL);
-               memcpy(smu_table->metrics_table, table->cpu_addr, table_size);
+               ret = smu_cmn_vram_cpy(smu, smu_table->metrics_table,
+                                      table->cpu_addr, table_size);
+               if (ret) {
+                       mutex_unlock(&smu_table->metrics_lock);
+                       return ret;
+               }
 
                smu_table->metrics_time = jiffies;
        }
@@ -551,9 +556,14 @@ static int smu_v15_0_8_get_system_metrics_table(struct smu_context *smu)
        }
 
        amdgpu_hdp_invalidate(smu->adev, NULL);
+
+       ret = smu_cmn_vram_cpy(smu, sys_table->cache.buffer,
+                              table->cpu_addr,
+                              sizeof(SystemMetricsTable_t));
+       if (ret)
+               return ret;
+
        smu_table_cache_update_time(sys_table, jiffies);
-       memcpy(sys_table->cache.buffer, table->cpu_addr,
-              sizeof(SystemMetricsTable_t));
 
        return 0;
 }
@@ -988,9 +998,9 @@ static int smu_v15_0_8_get_static_metrics_table(struct smu_context *smu)
        }
 
        amdgpu_hdp_invalidate(smu->adev, NULL);
-       memcpy(smu_table->metrics_table, table->cpu_addr, table_size);
 
-       return 0;
+       return smu_cmn_vram_cpy(smu, smu_table->metrics_table,
+                               table->cpu_addr, table_size);
 }
 
 static int smu_v15_0_8_fru_get_product_info(struct smu_context *smu,