> But on workstation, vbios do not support OD featur, the OD max memory With typo "featur" fixed, Reviewed-by: Evan Quan <evan.quan at amd.com> > -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf > Of Rex Zhu > Sent: Tuesday, June 12, 2018 3:09 PM > To: amd-gfx at lists.freedesktop.org > Cc: Zhu, Rex <Rex.Zhu at amd.com> > Subject: [PATCH] drm/amd/pp: Fix OD feature enable failed on Vega10 > workstation cards > > As hw required, soc clock must large than mclk, So we set max soc clock to > OD Max Memory clk. > But on workstation, vbios do not support OD featur, the OD max memory > clock is equal to 0. In this case, driver can support underclocking. > and set od max memory clock to the value in highest memory dpm level. > So the od max memory clock should be less than highest soc clock. > and driver should not change the soc clock. > > caused by commit ca57b9b0a156 > ("drm/amd/pp: Allow underclocking when od table is empty in vbios") > > Signed-off-by: Rex Zhu <Rex.Zhu at amd.com> > --- > drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > index 932ea8c..7355144 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > @@ -321,8 +321,12 @@ static int vega10_odn_initial_default_setting(struct > pp_hwmgr *hwmgr) > odn_table->min_vddc = dep_table[0]->entries[0].vddc; > > i = od_table[2]->count - 1; > - od_table[2]->entries[i].clk = hwmgr- > >platform_descriptor.overdriveLimit.memoryClock; > - od_table[2]->entries[i].vddc = odn_table->max_vddc; > + od_table[2]->entries[i].clk = hwmgr- > >platform_descriptor.overdriveLimit.memoryClock > od_table[2]- > >entries[i].clk ? > + hwmgr- > >platform_descriptor.overdriveLimit.memoryClock : > + od_table[2]->entries[i].clk; > + od_table[2]->entries[i].vddc = odn_table->max_vddc > od_table[2]- > >entries[i].vddc ? > + odn_table->max_vddc : > + od_table[2]->entries[i].vddc; > > return 0; > } > @@ -1325,6 +1329,7 @@ static int vega10_setup_default_dpm_tables(struct > pp_hwmgr *hwmgr) > if (hwmgr->platform_descriptor.overdriveLimit.memoryClock == 0) > hwmgr->platform_descriptor.overdriveLimit.memoryClock = > dpm_table->dpm_levels[dpm_table- > >count-1].value; > + > vega10_init_dpm_state(&(dpm_table->dpm_state)); > > data->dpm_table.eclk_table.count = 0; > -- > 1.9.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx