Re: [PATCH] drm/amd/powerplay: support BOOTUP_DEFAULT power profile mode

2018-12-27 Thread Deucher, Alexander
Acked-by: Alex Deucher 


From: amd-gfx  on behalf of Evan Quan 

Sent: Thursday, December 27, 2018 2:50:38 AM
To: amd-gfx@lists.freedesktop.org
Cc: Quan, Evan
Subject: [PATCH] drm/amd/powerplay: support BOOTUP_DEFAULT power profile mode

This can avoid unexpected profile mode change after running
compute workload.

Change-Id: I138e8747e4f588a6fb38b9c68f765bb653556dc0
Signed-off-by: Evan Quan 
---
 .../gpu/drm/amd/include/kgd_pp_interface.h| 13 +-
 drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c   | 24 ++-
 .../gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c  |  8 ---
 .../drm/amd/powerplay/hwmgr/vega10_hwmgr.c| 12 ++
 .../drm/amd/powerplay/hwmgr/vega20_hwmgr.c| 10 +---
 drivers/gpu/drm/amd/powerplay/inc/hwmgr.h |  2 +-
 6 files changed, 40 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h 
b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
index 1479ea1dc3e7..789c4f288485 100644
--- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h
+++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
@@ -127,12 +127,13 @@ enum amd_pp_task {
 };

 enum PP_SMC_POWER_PROFILE {
-   PP_SMC_POWER_PROFILE_FULLSCREEN3D = 0x0,
-   PP_SMC_POWER_PROFILE_POWERSAVING  = 0x1,
-   PP_SMC_POWER_PROFILE_VIDEO= 0x2,
-   PP_SMC_POWER_PROFILE_VR   = 0x3,
-   PP_SMC_POWER_PROFILE_COMPUTE  = 0x4,
-   PP_SMC_POWER_PROFILE_CUSTOM   = 0x5,
+   PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT = 0x0,
+   PP_SMC_POWER_PROFILE_FULLSCREEN3D = 0x1,
+   PP_SMC_POWER_PROFILE_POWERSAVING  = 0x2,
+   PP_SMC_POWER_PROFILE_VIDEO= 0x3,
+   PP_SMC_POWER_PROFILE_VR   = 0x4,
+   PP_SMC_POWER_PROFILE_COMPUTE  = 0x5,
+   PP_SMC_POWER_PROFILE_CUSTOM   = 0x6,
 };

 enum {
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c 
b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
index 0173d0480024..310b102a9292 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
@@ -64,17 +64,19 @@ static int ci_set_asic_special_caps(struct pp_hwmgr *hwmgr);

 static void hwmgr_init_workload_prority(struct pp_hwmgr *hwmgr)
 {
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D] = 2;
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_POWERSAVING] = 0;
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_VIDEO] = 1;
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_VR] = 3;
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_COMPUTE] = 4;
-
-   hwmgr->workload_setting[0] = PP_SMC_POWER_PROFILE_POWERSAVING;
-   hwmgr->workload_setting[1] = PP_SMC_POWER_PROFILE_VIDEO;
-   hwmgr->workload_setting[2] = PP_SMC_POWER_PROFILE_FULLSCREEN3D;
-   hwmgr->workload_setting[3] = PP_SMC_POWER_PROFILE_VR;
-   hwmgr->workload_setting[4] = PP_SMC_POWER_PROFILE_COMPUTE;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT] = 0;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D] = 1;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_POWERSAVING] = 2;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_VIDEO] = 3;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_VR] = 4;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_COMPUTE] = 5;
+
+   hwmgr->workload_setting[0] = PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT;
+   hwmgr->workload_setting[1] = PP_SMC_POWER_PROFILE_FULLSCREEN3D;
+   hwmgr->workload_setting[2] = PP_SMC_POWER_PROFILE_POWERSAVING;
+   hwmgr->workload_setting[3] = PP_SMC_POWER_PROFILE_VIDEO;
+   hwmgr->workload_setting[4] = PP_SMC_POWER_PROFILE_VR;
+   hwmgr->workload_setting[5] = PP_SMC_POWER_PROFILE_COMPUTE;
 }

 int hwmgr_early_init(struct pp_hwmgr *hwmgr)
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c 
b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
index d91390459326..c8f5c00dd1e7 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
@@ -77,8 +77,9 @@
 #define PCIE_BUS_CLK1
 #define TCLK(PCIE_BUS_CLK / 10)

-static const struct profile_mode_setting smu7_profiling[6] =
-   {{1, 0, 100, 30, 1, 0, 100, 10},
+static const struct profile_mode_setting smu7_profiling[7] =
+   {{0, 0, 0, 0, 0, 0, 0, 0},
+{1, 0, 100, 30, 1, 0, 100, 10},
  {1, 10, 0, 30, 0, 0, 0, 0},
  {0, 0, 0, 0, 1, 10, 16, 31},
  {1, 0, 11, 50, 1, 0, 100, 10},
@@ -4889,7 +4890,8 @@ static int smu7_get_power_profile_mode(struct pp_hwmgr 
*hwmgr, char *buf)
 uint32_t i, size = 0;
 uint32_t len;

-   static const char *profile_name[6] = {"3D_FULL

[PATCH] drm/amd/powerplay: support BOOTUP_DEFAULT power profile mode

2018-12-26 Thread Evan Quan
This can avoid unexpected profile mode change after running
compute workload.

Change-Id: I138e8747e4f588a6fb38b9c68f765bb653556dc0
Signed-off-by: Evan Quan 
---
 .../gpu/drm/amd/include/kgd_pp_interface.h| 13 +-
 drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c   | 24 ++-
 .../gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c  |  8 ---
 .../drm/amd/powerplay/hwmgr/vega10_hwmgr.c| 12 ++
 .../drm/amd/powerplay/hwmgr/vega20_hwmgr.c| 10 +---
 drivers/gpu/drm/amd/powerplay/inc/hwmgr.h |  2 +-
 6 files changed, 40 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h 
b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
index 1479ea1dc3e7..789c4f288485 100644
--- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h
+++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
@@ -127,12 +127,13 @@ enum amd_pp_task {
 };
 
 enum PP_SMC_POWER_PROFILE {
-   PP_SMC_POWER_PROFILE_FULLSCREEN3D = 0x0,
-   PP_SMC_POWER_PROFILE_POWERSAVING  = 0x1,
-   PP_SMC_POWER_PROFILE_VIDEO= 0x2,
-   PP_SMC_POWER_PROFILE_VR   = 0x3,
-   PP_SMC_POWER_PROFILE_COMPUTE  = 0x4,
-   PP_SMC_POWER_PROFILE_CUSTOM   = 0x5,
+   PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT = 0x0,
+   PP_SMC_POWER_PROFILE_FULLSCREEN3D = 0x1,
+   PP_SMC_POWER_PROFILE_POWERSAVING  = 0x2,
+   PP_SMC_POWER_PROFILE_VIDEO= 0x3,
+   PP_SMC_POWER_PROFILE_VR   = 0x4,
+   PP_SMC_POWER_PROFILE_COMPUTE  = 0x5,
+   PP_SMC_POWER_PROFILE_CUSTOM   = 0x6,
 };
 
 enum {
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c 
b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
index 0173d0480024..310b102a9292 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
@@ -64,17 +64,19 @@ static int ci_set_asic_special_caps(struct pp_hwmgr *hwmgr);
 
 static void hwmgr_init_workload_prority(struct pp_hwmgr *hwmgr)
 {
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D] = 2;
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_POWERSAVING] = 0;
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_VIDEO] = 1;
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_VR] = 3;
-   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_COMPUTE] = 4;
-
-   hwmgr->workload_setting[0] = PP_SMC_POWER_PROFILE_POWERSAVING;
-   hwmgr->workload_setting[1] = PP_SMC_POWER_PROFILE_VIDEO;
-   hwmgr->workload_setting[2] = PP_SMC_POWER_PROFILE_FULLSCREEN3D;
-   hwmgr->workload_setting[3] = PP_SMC_POWER_PROFILE_VR;
-   hwmgr->workload_setting[4] = PP_SMC_POWER_PROFILE_COMPUTE;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT] = 0;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D] = 1;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_POWERSAVING] = 2;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_VIDEO] = 3;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_VR] = 4;
+   hwmgr->workload_prority[PP_SMC_POWER_PROFILE_COMPUTE] = 5;
+
+   hwmgr->workload_setting[0] = PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT;
+   hwmgr->workload_setting[1] = PP_SMC_POWER_PROFILE_FULLSCREEN3D;
+   hwmgr->workload_setting[2] = PP_SMC_POWER_PROFILE_POWERSAVING;
+   hwmgr->workload_setting[3] = PP_SMC_POWER_PROFILE_VIDEO;
+   hwmgr->workload_setting[4] = PP_SMC_POWER_PROFILE_VR;
+   hwmgr->workload_setting[5] = PP_SMC_POWER_PROFILE_COMPUTE;
 }
 
 int hwmgr_early_init(struct pp_hwmgr *hwmgr)
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c 
b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
index d91390459326..c8f5c00dd1e7 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
@@ -77,8 +77,9 @@
 #define PCIE_BUS_CLK1
 #define TCLK(PCIE_BUS_CLK / 10)
 
-static const struct profile_mode_setting smu7_profiling[6] =
-   {{1, 0, 100, 30, 1, 0, 100, 10},
+static const struct profile_mode_setting smu7_profiling[7] =
+   {{0, 0, 0, 0, 0, 0, 0, 0},
+{1, 0, 100, 30, 1, 0, 100, 10},
 {1, 10, 0, 30, 0, 0, 0, 0},
 {0, 0, 0, 0, 1, 10, 16, 31},
 {1, 0, 11, 50, 1, 0, 100, 10},
@@ -4889,7 +4890,8 @@ static int smu7_get_power_profile_mode(struct pp_hwmgr 
*hwmgr, char *buf)
uint32_t i, size = 0;
uint32_t len;
 
-   static const char *profile_name[6] = {"3D_FULL_SCREEN",
+   static const char *profile_name[7] = {"BOOTUP_DEFAULT",
+   "3D_FULL_SCREEN",
"POWER_SAVING",
"VIDEO",
"VR",
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwm