Re: [PATCH 7/7] drm/amd/pm: fix some OEM SKU specific stability issues

2022-02-08 Thread Deucher, Alexander
[Public]

Series is:
Reviewed-by: Alex Deucher 

From: Quan, Evan 
Sent: Monday, February 7, 2022 10:20 PM
To: amd-gfx@lists.freedesktop.org 
Cc: Deucher, Alexander ; Quan, Evan 

Subject: [PATCH 7/7] drm/amd/pm: fix some OEM SKU specific stability issues

Add a quirk in sienna_cichlid_ppt.c to fix some OEM SKU
specific stability issues.

Signed-off-by: Evan Quan 
Change-Id: I172c6429c54253788dbf28f7acf877375f2bfc5b
---
 .../amd/pm/swsmu/smu11/sienna_cichlid_ppt.c   | 32 ++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
index a7bb5358d4a4..f964af05f376 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
@@ -428,6 +428,36 @@ static int sienna_cichlid_store_powerplay_table(struct 
smu_context *smu)
 return 0;
 }

+static int sienna_cichlid_patch_pptable_quirk(struct smu_context *smu)
+{
+   struct amdgpu_device *adev = smu->adev;
+   uint32_t *board_reserved;
+   uint16_t *freq_table_gfx;
+   uint32_t i;
+
+   /* Fix some OEM SKU specific stability issues */
+   GET_PPTABLE_MEMBER(BoardReserved, _reserved);
+   if ((adev->pdev->device == 0x73DF) &&
+   (adev->pdev->revision == 0XC3) &&
+   (adev->pdev->subsystem_device == 0x16C2) &&
+   (adev->pdev->subsystem_vendor == 0x1043))
+   board_reserved[0] = 1387;
+
+   GET_PPTABLE_MEMBER(FreqTableGfx, _table_gfx);
+   if ((adev->pdev->device == 0x73DF) &&
+   (adev->pdev->revision == 0XC3) &&
+   ((adev->pdev->subsystem_device == 0x16C2) ||
+   (adev->pdev->subsystem_device == 0x133C)) &&
+   (adev->pdev->subsystem_vendor == 0x1043)) {
+   for (i = 0; i < NUM_GFXCLK_DPM_LEVELS; i++) {
+   if (freq_table_gfx[i] > 2500)
+   freq_table_gfx[i] = 2500;
+   }
+   }
+
+   return 0;
+}
+
 static int sienna_cichlid_setup_pptable(struct smu_context *smu)
 {
 int ret = 0;
@@ -448,7 +478,7 @@ static int sienna_cichlid_setup_pptable(struct smu_context 
*smu)
 if (ret)
 return ret;

-   return ret;
+   return sienna_cichlid_patch_pptable_quirk(smu);
 }

 static int sienna_cichlid_tables_init(struct smu_context *smu)
--
2.29.0



[PATCH 7/7] drm/amd/pm: fix some OEM SKU specific stability issues

2022-02-07 Thread Evan Quan
Add a quirk in sienna_cichlid_ppt.c to fix some OEM SKU
specific stability issues.

Signed-off-by: Evan Quan 
Change-Id: I172c6429c54253788dbf28f7acf877375f2bfc5b
---
 .../amd/pm/swsmu/smu11/sienna_cichlid_ppt.c   | 32 ++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
index a7bb5358d4a4..f964af05f376 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
@@ -428,6 +428,36 @@ static int sienna_cichlid_store_powerplay_table(struct 
smu_context *smu)
return 0;
 }
 
+static int sienna_cichlid_patch_pptable_quirk(struct smu_context *smu)
+{
+   struct amdgpu_device *adev = smu->adev;
+   uint32_t *board_reserved;
+   uint16_t *freq_table_gfx;
+   uint32_t i;
+
+   /* Fix some OEM SKU specific stability issues */
+   GET_PPTABLE_MEMBER(BoardReserved, _reserved);
+   if ((adev->pdev->device == 0x73DF) &&
+   (adev->pdev->revision == 0XC3) &&
+   (adev->pdev->subsystem_device == 0x16C2) &&
+   (adev->pdev->subsystem_vendor == 0x1043))
+   board_reserved[0] = 1387;
+
+   GET_PPTABLE_MEMBER(FreqTableGfx, _table_gfx);
+   if ((adev->pdev->device == 0x73DF) &&
+   (adev->pdev->revision == 0XC3) &&
+   ((adev->pdev->subsystem_device == 0x16C2) ||
+   (adev->pdev->subsystem_device == 0x133C)) &&
+   (adev->pdev->subsystem_vendor == 0x1043)) {
+   for (i = 0; i < NUM_GFXCLK_DPM_LEVELS; i++) {
+   if (freq_table_gfx[i] > 2500)
+   freq_table_gfx[i] = 2500;
+   }
+   }
+
+   return 0;
+}
+
 static int sienna_cichlid_setup_pptable(struct smu_context *smu)
 {
int ret = 0;
@@ -448,7 +478,7 @@ static int sienna_cichlid_setup_pptable(struct smu_context 
*smu)
if (ret)
return ret;
 
-   return ret;
+   return sienna_cichlid_patch_pptable_quirk(smu);
 }
 
 static int sienna_cichlid_tables_init(struct smu_context *smu)
-- 
2.29.0