RE: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

2021-03-10 Thread Lazar, Lijo
[AMD Public Use]

>> I was just to be consistent with what we did for carrizo/stoney.  I can 
>> return an error if you prefer.
Since they support GFXOFF (or 0 %),  personally error is preferrable to 
reporting 50% activity.

Thanks,
Lijo

-Original Message-
From: Alex Deucher  
Sent: Wednesday, March 10, 2021 9:47 PM
To: Lazar, Lijo 
Cc: Deucher, Alexander ; 
amd-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

On Wed, Mar 10, 2021 at 3:25 AM Lazar, Lijo  wrote:
>
> [AMD Public Use]
>
>
>
> -Original Message-
> From: amd-gfx  On Behalf Of 
> Alex Deucher
> Sent: Wednesday, March 10, 2021 9:42 AM
> To: amd-gfx@lists.freedesktop.org
> Cc: Deucher, Alexander 
> Subject: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy 
> query
>
> Was added in newer versions of the firmware.  Add support for it.
>
> Signed-off-by: Alex Deucher 
> ---
>  drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h |  1 +
>  .../drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c  | 30 
> ++-
>  2 files changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h 
> b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
> index 4c7e08ba5fa4..171f12b82716 100644
> --- a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
> +++ b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
> @@ -84,6 +84,7 @@
>  #define PPSMC_MSG_PowerGateMmHub0x35
>  #define PPSMC_MSG_SetRccPfcPmeRestoreRegister   0x36
>  #define PPSMC_MSG_GpuChangeState0x37
> +#define PPSMC_MSG_GetGfxBusy0x3D
>  #define PPSMC_Message_Count 0x42
>
>  typedef uint16_t PPSMC_Result;
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c 
> b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
> index c932b632ddd4..52fcdec738e9 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
> +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
> @@ -1261,9 +1261,21 @@ static int smu10_read_sensor(struct pp_hwmgr *hwmgr, 
> int idx,
>   void *value, int *size)  {
> struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr 
> *)(hwmgr->backend);
> -   uint32_t sclk, mclk;
> +   struct amdgpu_device *adev = hwmgr->adev;
> +   uint32_t sclk, mclk, activity_percent;
> +   bool has_gfx_busy;
> int ret = 0;
>
> +   /* GetGfxBusy support was added on RV SMU FW 30.85.00 and PCO 4.30.59 
> */
> +   if ((adev->apu_flags & AMD_APU_IS_PICASSO) &&
> +   (hwmgr->smu_version >= 0x41e3b))
> +   has_gfx_busy = true;
> +   else if ((adev->apu_flags & AMD_APU_IS_RAVEN) &&
> +(hwmgr->smu_version >= 0x1e5500))
> +   has_gfx_busy = true;
> +   else
> +   has_gfx_busy = false;
> +
> switch (idx) {
> case AMDGPU_PP_SENSOR_GFX_SCLK:
> smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetGfxclkFrequency, 
> ); @@ -1284,6 +1296,22 @@ static int smu10_read_sensor(struct pp_hwmgr 
> *hwmgr, int idx,
> *(uint32_t *)value =  smu10_data->vcn_power_gated ? 0 : 1;
> *size = 4;
> break;
> +   case AMDGPU_PP_SENSOR_GPU_LOAD:
> +   if (has_gfx_busy) {
> +   ret = smum_send_msg_to_smc(hwmgr,
> +  PPSMC_MSG_GetGfxBusy,
> +  _percent);
> +   if (!ret) {
> +   activity_percent = activity_percent > 100 ? 
> 100 : activity_percent;
> +   } else {
> +   activity_percent = 50;
>
> <> Why this is assumed? Isn't this as good as not supported?

I was just to be consistent with what we did for carrizo/stoney.  I can return 
an error if you prefer.

Alex


>
> Thanks,
> Lijo
>
> +   }
> +   *((uint32_t *)value) = activity_percent;
> +   return 0;
> +   } else {
> +   return -EOPNOTSUPP;
> +   }
> +   break;
> default:
> ret = -EOPNOTSUPP;
> break;
> --
> 2.29.2
>
> ___
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist
> s.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfxdata=04%7C01%7CLi
> jo.Lazar%40amd.com%7C28ef84f65ef9493a458608d8e3e000d4%7C3dd8961fe4884e
> 608e11a82d994e183d%7C0%7C0%7

Re: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

2021-03-10 Thread Alex Deucher
On Wed, Mar 10, 2021 at 3:25 AM Lazar, Lijo  wrote:
>
> [AMD Public Use]
>
>
>
> -Original Message-
> From: amd-gfx  On Behalf Of Alex 
> Deucher
> Sent: Wednesday, March 10, 2021 9:42 AM
> To: amd-gfx@lists.freedesktop.org
> Cc: Deucher, Alexander 
> Subject: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query
>
> Was added in newer versions of the firmware.  Add support for it.
>
> Signed-off-by: Alex Deucher 
> ---
>  drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h |  1 +
>  .../drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c  | 30 ++-
>  2 files changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h 
> b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
> index 4c7e08ba5fa4..171f12b82716 100644
> --- a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
> +++ b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
> @@ -84,6 +84,7 @@
>  #define PPSMC_MSG_PowerGateMmHub0x35
>  #define PPSMC_MSG_SetRccPfcPmeRestoreRegister   0x36
>  #define PPSMC_MSG_GpuChangeState0x37
> +#define PPSMC_MSG_GetGfxBusy0x3D
>  #define PPSMC_Message_Count 0x42
>
>  typedef uint16_t PPSMC_Result;
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c 
> b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
> index c932b632ddd4..52fcdec738e9 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
> +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
> @@ -1261,9 +1261,21 @@ static int smu10_read_sensor(struct pp_hwmgr *hwmgr, 
> int idx,
>   void *value, int *size)
>  {
> struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr 
> *)(hwmgr->backend);
> -   uint32_t sclk, mclk;
> +   struct amdgpu_device *adev = hwmgr->adev;
> +   uint32_t sclk, mclk, activity_percent;
> +   bool has_gfx_busy;
> int ret = 0;
>
> +   /* GetGfxBusy support was added on RV SMU FW 30.85.00 and PCO 4.30.59 
> */
> +   if ((adev->apu_flags & AMD_APU_IS_PICASSO) &&
> +   (hwmgr->smu_version >= 0x41e3b))
> +   has_gfx_busy = true;
> +   else if ((adev->apu_flags & AMD_APU_IS_RAVEN) &&
> +(hwmgr->smu_version >= 0x1e5500))
> +   has_gfx_busy = true;
> +   else
> +   has_gfx_busy = false;
> +
> switch (idx) {
> case AMDGPU_PP_SENSOR_GFX_SCLK:
> smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetGfxclkFrequency, 
> ); @@ -1284,6 +1296,22 @@ static int smu10_read_sensor(struct pp_hwmgr 
> *hwmgr, int idx,
> *(uint32_t *)value =  smu10_data->vcn_power_gated ? 0 : 1;
> *size = 4;
> break;
> +   case AMDGPU_PP_SENSOR_GPU_LOAD:
> +   if (has_gfx_busy) {
> +   ret = smum_send_msg_to_smc(hwmgr,
> +  PPSMC_MSG_GetGfxBusy,
> +  _percent);
> +   if (!ret) {
> +   activity_percent = activity_percent > 100 ? 
> 100 : activity_percent;
> +   } else {
> +   activity_percent = 50;
>
> <> Why this is assumed? Isn't this as good as not supported?

I was just to be consistent with what we did for carrizo/stoney.  I
can return an error if you prefer.

Alex


>
> Thanks,
> Lijo
>
> +   }
> +   *((uint32_t *)value) = activity_percent;
> +   return 0;
> +   } else {
> +   return -EOPNOTSUPP;
> +   }
> +   break;
> default:
> ret = -EOPNOTSUPP;
> break;
> --
> 2.29.2
>
> ___
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfxdata=04%7C01%7Clijo.lazar%40amd.com%7C4ae33de1e1cb46155eef08d8e37aaf58%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637509463368911804%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=2KX02OYjW4d7%2FFK3dOUz6kiBb8MUItOSOqoDEnu8Lrk%3Dreserved=0
> ___
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

2021-03-10 Thread S, Shirish
Tested-by: Shirish S 



Regards,
Shirish S

-Original Message-
From: amd-gfx  On Behalf Of Quan, Evan
Sent: Wednesday, March 10, 2021 1:11 PM
To: Deucher, Alexander ; 
amd-gfx@lists.freedesktop.org
Cc: Deucher, Alexander 
Subject: RE: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

[AMD Public Use]

Reviewed-by: Evan Quan 

-Original Message-
From: amd-gfx  On Behalf Of Alex Deucher
Sent: Wednesday, March 10, 2021 12:12 PM
To: amd-gfx@lists.freedesktop.org
Cc: Deucher, Alexander 
Subject: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

Was added in newer versions of the firmware.  Add support for it.

Signed-off-by: Alex Deucher 
---
 drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h |  1 +
 .../drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c  | 30 ++-
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h 
b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
index 4c7e08ba5fa4..171f12b82716 100644
--- a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
+++ b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
@@ -84,6 +84,7 @@
 #define PPSMC_MSG_PowerGateMmHub0x35
 #define PPSMC_MSG_SetRccPfcPmeRestoreRegister   0x36
 #define PPSMC_MSG_GpuChangeState0x37
+#define PPSMC_MSG_GetGfxBusy0x3D
 #define PPSMC_Message_Count 0x42
 
 typedef uint16_t PPSMC_Result;
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
index c932b632ddd4..52fcdec738e9 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
@@ -1261,9 +1261,21 @@ static int smu10_read_sensor(struct pp_hwmgr *hwmgr, int 
idx,
  void *value, int *size)
 {
struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr *)(hwmgr->backend);
-   uint32_t sclk, mclk;
+   struct amdgpu_device *adev = hwmgr->adev;
+   uint32_t sclk, mclk, activity_percent;
+   bool has_gfx_busy;
int ret = 0;
 
+   /* GetGfxBusy support was added on RV SMU FW 30.85.00 and PCO 4.30.59 */
+   if ((adev->apu_flags & AMD_APU_IS_PICASSO) &&
+   (hwmgr->smu_version >= 0x41e3b))
+   has_gfx_busy = true;
+   else if ((adev->apu_flags & AMD_APU_IS_RAVEN) &&
+(hwmgr->smu_version >= 0x1e5500))
+   has_gfx_busy = true;
+   else
+   has_gfx_busy = false;
+
switch (idx) {
case AMDGPU_PP_SENSOR_GFX_SCLK:
smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetGfxclkFrequency, 
); @@ -1284,6 +1296,22 @@ static int smu10_read_sensor(struct pp_hwmgr 
*hwmgr, int idx,
*(uint32_t *)value =  smu10_data->vcn_power_gated ? 0 : 1;
*size = 4;
break;
+   case AMDGPU_PP_SENSOR_GPU_LOAD:
+   if (has_gfx_busy) {
+   ret = smum_send_msg_to_smc(hwmgr,
+  PPSMC_MSG_GetGfxBusy,
+  _percent);
+   if (!ret) {
+   activity_percent = activity_percent > 100 ? 100 
: activity_percent;
+   } else {
+   activity_percent = 50;
+   }
+   *((uint32_t *)value) = activity_percent;
+   return 0;
+   } else {
+   return -EOPNOTSUPP;
+   }
+   break;
default:
ret = -EOPNOTSUPP;
break;
--
2.29.2

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfxdata=04%7C01%7CShirish.S%40amd.com%7C91ec8f556727479d060408d8e397d498%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637509588548327792%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=rQknLutpWSubH5e1T29n2hIpYT048FFfd8gf8bAQgEQ%3Dreserved=0
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfxdata=04%7C01%7CShirish.S%40amd.com%7C91ec8f556727479d060408d8e397d498%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637509588548327792%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=rQknLutpWSubH5e1T29n2hIpYT048FFfd8gf8bAQgEQ%3Dreserved=0
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

2021-03-10 Thread Lazar, Lijo
[AMD Public Use]



-Original Message-
From: amd-gfx  On Behalf Of Alex Deucher
Sent: Wednesday, March 10, 2021 9:42 AM
To: amd-gfx@lists.freedesktop.org
Cc: Deucher, Alexander 
Subject: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

Was added in newer versions of the firmware.  Add support for it.

Signed-off-by: Alex Deucher 
---
 drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h |  1 +
 .../drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c  | 30 ++-
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h 
b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
index 4c7e08ba5fa4..171f12b82716 100644
--- a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
+++ b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
@@ -84,6 +84,7 @@
 #define PPSMC_MSG_PowerGateMmHub0x35
 #define PPSMC_MSG_SetRccPfcPmeRestoreRegister   0x36
 #define PPSMC_MSG_GpuChangeState0x37
+#define PPSMC_MSG_GetGfxBusy0x3D
 #define PPSMC_Message_Count 0x42
 
 typedef uint16_t PPSMC_Result;
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
index c932b632ddd4..52fcdec738e9 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
@@ -1261,9 +1261,21 @@ static int smu10_read_sensor(struct pp_hwmgr *hwmgr, int 
idx,
  void *value, int *size)
 {
struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr *)(hwmgr->backend);
-   uint32_t sclk, mclk;
+   struct amdgpu_device *adev = hwmgr->adev;
+   uint32_t sclk, mclk, activity_percent;
+   bool has_gfx_busy;
int ret = 0;
 
+   /* GetGfxBusy support was added on RV SMU FW 30.85.00 and PCO 4.30.59 */
+   if ((adev->apu_flags & AMD_APU_IS_PICASSO) &&
+   (hwmgr->smu_version >= 0x41e3b))
+   has_gfx_busy = true;
+   else if ((adev->apu_flags & AMD_APU_IS_RAVEN) &&
+(hwmgr->smu_version >= 0x1e5500))
+   has_gfx_busy = true;
+   else
+   has_gfx_busy = false;
+
switch (idx) {
case AMDGPU_PP_SENSOR_GFX_SCLK:
smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetGfxclkFrequency, 
); @@ -1284,6 +1296,22 @@ static int smu10_read_sensor(struct pp_hwmgr 
*hwmgr, int idx,
*(uint32_t *)value =  smu10_data->vcn_power_gated ? 0 : 1;
*size = 4;
break;
+   case AMDGPU_PP_SENSOR_GPU_LOAD:
+   if (has_gfx_busy) {
+   ret = smum_send_msg_to_smc(hwmgr,
+  PPSMC_MSG_GetGfxBusy,
+  _percent);
+   if (!ret) {
+   activity_percent = activity_percent > 100 ? 100 
: activity_percent;
+   } else {
+   activity_percent = 50;

<> Why this is assumed? Isn't this as good as not supported?

Thanks,
Lijo

+   }
+   *((uint32_t *)value) = activity_percent;
+   return 0;
+   } else {
+   return -EOPNOTSUPP;
+   }
+   break;
default:
ret = -EOPNOTSUPP;
break;
--
2.29.2

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfxdata=04%7C01%7Clijo.lazar%40amd.com%7C4ae33de1e1cb46155eef08d8e37aaf58%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637509463368911804%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=2KX02OYjW4d7%2FFK3dOUz6kiBb8MUItOSOqoDEnu8Lrk%3Dreserved=0
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

2021-03-09 Thread Quan, Evan
[AMD Public Use]

Reviewed-by: Evan Quan 

-Original Message-
From: amd-gfx  On Behalf Of Alex Deucher
Sent: Wednesday, March 10, 2021 12:12 PM
To: amd-gfx@lists.freedesktop.org
Cc: Deucher, Alexander 
Subject: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

Was added in newer versions of the firmware.  Add support for it.

Signed-off-by: Alex Deucher 
---
 drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h |  1 +
 .../drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c  | 30 ++-
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h 
b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
index 4c7e08ba5fa4..171f12b82716 100644
--- a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
+++ b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
@@ -84,6 +84,7 @@
 #define PPSMC_MSG_PowerGateMmHub0x35
 #define PPSMC_MSG_SetRccPfcPmeRestoreRegister   0x36
 #define PPSMC_MSG_GpuChangeState0x37
+#define PPSMC_MSG_GetGfxBusy0x3D
 #define PPSMC_Message_Count 0x42
 
 typedef uint16_t PPSMC_Result;
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
index c932b632ddd4..52fcdec738e9 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
@@ -1261,9 +1261,21 @@ static int smu10_read_sensor(struct pp_hwmgr *hwmgr, int 
idx,
  void *value, int *size)
 {
struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr *)(hwmgr->backend);
-   uint32_t sclk, mclk;
+   struct amdgpu_device *adev = hwmgr->adev;
+   uint32_t sclk, mclk, activity_percent;
+   bool has_gfx_busy;
int ret = 0;
 
+   /* GetGfxBusy support was added on RV SMU FW 30.85.00 and PCO 4.30.59 */
+   if ((adev->apu_flags & AMD_APU_IS_PICASSO) &&
+   (hwmgr->smu_version >= 0x41e3b))
+   has_gfx_busy = true;
+   else if ((adev->apu_flags & AMD_APU_IS_RAVEN) &&
+(hwmgr->smu_version >= 0x1e5500))
+   has_gfx_busy = true;
+   else
+   has_gfx_busy = false;
+
switch (idx) {
case AMDGPU_PP_SENSOR_GFX_SCLK:
smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetGfxclkFrequency, 
); @@ -1284,6 +1296,22 @@ static int smu10_read_sensor(struct pp_hwmgr 
*hwmgr, int idx,
*(uint32_t *)value =  smu10_data->vcn_power_gated ? 0 : 1;
*size = 4;
break;
+   case AMDGPU_PP_SENSOR_GPU_LOAD:
+   if (has_gfx_busy) {
+   ret = smum_send_msg_to_smc(hwmgr,
+  PPSMC_MSG_GetGfxBusy,
+  _percent);
+   if (!ret) {
+   activity_percent = activity_percent > 100 ? 100 
: activity_percent;
+   } else {
+   activity_percent = 50;
+   }
+   *((uint32_t *)value) = activity_percent;
+   return 0;
+   } else {
+   return -EOPNOTSUPP;
+   }
+   break;
default:
ret = -EOPNOTSUPP;
break;
--
2.29.2

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfxdata=04%7C01%7Cevan.quan%40amd.com%7C4ae33de1e1cb46155eef08d8e37aaf58%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637509463371167218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=mqAGA9lYO8lu5ZLC6CI7Cc7In6v7%2BWiyUwcaG6iQI%2F4%3Dreserved=0
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

2021-03-09 Thread Chen, Guchun
[AMD Public Use]

+   } else {
+   return -EOPNOTSUPP;
+   }
+   break;

The 'break' looks useless, as no chance arriving here.

Regards,
Guchun

-Original Message-
From: amd-gfx  On Behalf Of Alex Deucher
Sent: Wednesday, March 10, 2021 12:12 PM
To: amd-gfx@lists.freedesktop.org
Cc: Deucher, Alexander 
Subject: [PATCH] drm/amdgpu/powerplay/smu10: add support for gpu busy query

Was added in newer versions of the firmware.  Add support for it.

Signed-off-by: Alex Deucher 
---
 drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h |  1 +
 .../drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c  | 30 ++-
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h 
b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
index 4c7e08ba5fa4..171f12b82716 100644
--- a/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
+++ b/drivers/gpu/drm/amd/pm/inc/rv_ppsmc.h
@@ -84,6 +84,7 @@
 #define PPSMC_MSG_PowerGateMmHub0x35
 #define PPSMC_MSG_SetRccPfcPmeRestoreRegister   0x36
 #define PPSMC_MSG_GpuChangeState0x37
+#define PPSMC_MSG_GetGfxBusy0x3D
 #define PPSMC_Message_Count 0x42
 
 typedef uint16_t PPSMC_Result;
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
index c932b632ddd4..52fcdec738e9 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c
@@ -1261,9 +1261,21 @@ static int smu10_read_sensor(struct pp_hwmgr *hwmgr, int 
idx,
  void *value, int *size)
 {
struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr *)(hwmgr->backend);
-   uint32_t sclk, mclk;
+   struct amdgpu_device *adev = hwmgr->adev;
+   uint32_t sclk, mclk, activity_percent;
+   bool has_gfx_busy;
int ret = 0;
 
+   /* GetGfxBusy support was added on RV SMU FW 30.85.00 and PCO 4.30.59 */
+   if ((adev->apu_flags & AMD_APU_IS_PICASSO) &&
+   (hwmgr->smu_version >= 0x41e3b))
+   has_gfx_busy = true;
+   else if ((adev->apu_flags & AMD_APU_IS_RAVEN) &&
+(hwmgr->smu_version >= 0x1e5500))
+   has_gfx_busy = true;
+   else
+   has_gfx_busy = false;
+
switch (idx) {
case AMDGPU_PP_SENSOR_GFX_SCLK:
smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetGfxclkFrequency, 
); @@ -1284,6 +1296,22 @@ static int smu10_read_sensor(struct pp_hwmgr 
*hwmgr, int idx,
*(uint32_t *)value =  smu10_data->vcn_power_gated ? 0 : 1;
*size = 4;
break;
+   case AMDGPU_PP_SENSOR_GPU_LOAD:
+   if (has_gfx_busy) {
+   ret = smum_send_msg_to_smc(hwmgr,
+  PPSMC_MSG_GetGfxBusy,
+  _percent);
+   if (!ret) {
+   activity_percent = activity_percent > 100 ? 100 
: activity_percent;
+   } else {
+   activity_percent = 50;
+   }
+   *((uint32_t *)value) = activity_percent;
+   return 0;
+   } else {
+   return -EOPNOTSUPP;
+   }
+   break;
default:
ret = -EOPNOTSUPP;
break;
--
2.29.2

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfxdata=04%7C01%7Cguchun.chen%40amd.com%7C4ae33de1e1cb46155eef08d8e37aaf58%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637509463372230606%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=MuROLcwbCeFRI8RWtgPSnrz5J4CEfG6R8yvbk8mqy%2Bg%3Dreserved=0
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx