]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/pm: Add unique ids for SMUv13.0.6 SOCs
authorLijo Lazar <lijo.lazar@amd.com>
Mon, 4 Aug 2025 07:59:05 +0000 (13:29 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Aug 2025 18:22:11 +0000 (14:22 -0400)
Fetch and store the unique ids for AIDs/XCDs in SMUv13.0.6 SOCs.

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/smu13/smu_v13_0_6_ppt.c

index 90e66c8f2f8202455ba074aea84b5e03dd579d6d..733c4b3cef7d939dbd97c62e8f08c894fc44cd4e 100644 (file)
@@ -822,7 +822,7 @@ static int smu_v13_0_6_setup_driver_pptable(struct smu_context *smu)
        struct PPTable_t *pptable =
                (struct PPTable_t *)smu_table->driver_pptable;
        int version = smu_v13_0_6_get_metrics_version(smu);
-       int ret, i, retry = 100;
+       int ret, i, retry = 100, n;
        uint32_t table_version;
        uint16_t max_speed;
        uint8_t max_width;
@@ -884,6 +884,23 @@ static int smu_v13_0_6_setup_driver_pptable(struct smu_context *smu)
                pptable->PublicSerialNumber_AID =
                        GET_METRIC_FIELD(PublicSerialNumber_AID, version)[0];
 
+               amdgpu_device_set_uid(smu->adev->uid_info, AMDGPU_UID_TYPE_SOC,
+                                     0, pptable->PublicSerialNumber_AID);
+               n = ARRAY_SIZE(metrics_v0->PublicSerialNumber_AID);
+               for (i = 0; i < n; i++) {
+                       amdgpu_device_set_uid(
+                               smu->adev->uid_info, AMDGPU_UID_TYPE_AID, i,
+                               GET_METRIC_FIELD(PublicSerialNumber_AID,
+                                                version)[i]);
+               }
+               n = ARRAY_SIZE(metrics_v0->PublicSerialNumber_XCD);
+               for (i = 0; i < n; i++) {
+                       amdgpu_device_set_uid(
+                               smu->adev->uid_info, AMDGPU_UID_TYPE_XCD, i,
+                               GET_METRIC_FIELD(PublicSerialNumber_XCD,
+                                                version)[i]);
+               }
+
                pptable->Init = true;
                if (smu_v13_0_6_cap_supported(smu, SMU_CAP(STATIC_METRICS))) {
                        ret = smu_v13_0_6_get_static_metrics_table(smu);