[AMD Public Use] Reviewed-by: Tao Zhou <tao.zhou1@xxxxxxx> > -----Original Message----- > From: Kenneth Feng <kenneth.feng@xxxxxxx> > Sent: Wednesday, January 27, 2021 4:17 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Zhou1, Tao <Tao.Zhou1@xxxxxxx>; Feng, Kenneth > <Kenneth.Feng@xxxxxxx> > Subject: [PATCH v2] drm/amd/pm: Enable gfx DCS feature > > Background: > Gfx Duty Cycle Scaling(DCS) is applied on the small power limit skus. > When the current/power/temperature exceeds the limit with the heavy > workload, the gfx core can be shut off and powered on back and forth. > The ON time and OFF time is determined by the firmware according to the > accumulated power credits. > This feature is different from gfxoff.Gfxoff is applied in the idle case and DCS is > applied in the case with heavey workload.There are two types of DCS: > Async DCS and Frame-aligned DCS.Frame-aligned DCS is applied on 3D fullscreen > and VR workload. > Since we only supports Async DCS now,disalbe DCS when the 3D fullscreen or > the VR workload type is chosen. > > Verification: > The power is lowerer or the perf/watt is increased in the throttling case. > To be simplified, the entry/exit counter can be observed from the firmware. > > Signed-off-by: Kenneth Feng <kenneth.feng@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 ++++++-- > drivers/gpu/drm/amd/include/amd_shared.h | 1 + > .../gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 12 ++++++++++++ > 3 files changed, 19 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index 82c2fa8a67cd..186bbe139bde 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -131,8 +131,12 @@ uint amdgpu_pg_mask = 0xffffffff; uint > amdgpu_sdma_phase_quantum = 32; char *amdgpu_disable_cu = NULL; char > *amdgpu_virtual_display = NULL; > -/* OverDrive(bit 14) disabled by default*/ -uint amdgpu_pp_feature_mask = > 0xffffbfff; > + > +/* > + * OverDrive(bit 14) disabled by default > + * GFX DCS(bit 19) disabled by default > + */ > +uint amdgpu_pp_feature_mask = 0xfff7bfff; > uint amdgpu_force_long_training; > int amdgpu_job_hang_limit; > int amdgpu_lbpw = -1; > diff --git a/drivers/gpu/drm/amd/include/amd_shared.h > b/drivers/gpu/drm/amd/include/amd_shared.h > index 9676016a37ce..43ed6291b2b8 100644 > --- a/drivers/gpu/drm/amd/include/amd_shared.h > +++ b/drivers/gpu/drm/amd/include/amd_shared.h > @@ -213,6 +213,7 @@ enum PP_FEATURE_MASK { > PP_ACG_MASK = 0x10000, > PP_STUTTER_MODE = 0x20000, > PP_AVFS_MASK = 0x40000, > + PP_GFX_DCS_MASK = 0x80000, > }; > > enum DC_FEATURE_MASK { > 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 24f3c96a5e5e..dffdcebc80e1 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 > @@ -261,6 +261,9 @@ sienna_cichlid_get_allowed_feature_mask(struct > smu_context *smu, > *(uint64_t *)feature_mask |= > FEATURE_MASK(FEATURE_DPM_GFX_GPO_BIT); > } > > + if ((adev->pm.pp_feature & PP_GFX_DCS_MASK) && adev->asic_type > > CHIP_SIENNA_CICHLID) > + *(uint64_t *)feature_mask |= > FEATURE_MASK(FEATURE_GFX_DCS_BIT); > + > if (adev->pm.pp_feature & PP_MCLK_DPM_MASK) > *(uint64_t *)feature_mask |= > FEATURE_MASK(FEATURE_DPM_UCLK_BIT) > | > FEATURE_MASK(FEATURE_MEM_VDDCI_SCALING_BIT) > @@ -1437,6 +1440,15 @@ static int > sienna_cichlid_set_power_profile_mode(struct smu_context *smu, long * > smu_cmn_send_smc_msg_with_param(smu, > SMU_MSG_SetWorkloadMask, > 1 << workload_type, NULL); > > + /* have to disable dcs if it's the 3D fullscreen or VR workload type */ > + if ((smu->adev->pm.pp_feature & PP_GFX_DCS_MASK) && > + smu->adev->asic_type > CHIP_SIENNA_CICHLID) { > + ret = smu_cmn_feature_set_enabled(smu, > SMU_FEATURE_GFX_DCS_BIT, (workload_type == > + WORKLOAD_PPLIB_FULL_SCREEN_3D_BIT || > workload_type == WORKLOAD_PPLIB_VR_BIT) ? 0 : 1); > + if (ret) > + return ret; > + } > + > return ret; > } > > -- > 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx