Indexing of FeatureCtrlMask for SMU13 OverDrive

Alex Deucher alexdeucher at gmail.com
Tue Feb 7 14:11:44 UTC 2023


On Mon, Feb 6, 2023 at 11:36 PM Alex Deucher <alexdeucher at gmail.com> wrote:
>
> On Mon, Feb 6, 2023 at 8:17 PM Matt Coffin <mcoffin13 at gmail.com> wrote:
> >
> > Hello again,
> >
> > I've been working on OverDrive support for smu13, as you probably
> > already know. In that endeavor, it also contains the following:
> >
> > 1. I've come up with a few patterns that I think will reduce the
> > amount of boilerplate and SMU-specific code required to do
> > implement these interfaces in the future.
> > 2. Since the old pp_od_clk_voltage sysfs interface is inadequate for
> > usage in setting values other than a few indexed clock/voltage settings,
> > I'll likely be sending a proposed "generic" interface, where OD settings
> > are exposed to userspace by ASIC-specific indexed identifiers.
> >
> > But, those are beside the point, for now.
> >
> > While picking through the existing headers, the information in
> > smu_v13_0_0_pptable.h seems to not quite be in line with what I'm seeing
> > coming from the card, so I'm instead focusing mainly on
> > smu13_driver_if_v13_0_0.h.
> >
> > In the two OverDrive-related structs, OverDriveTable_t and
> > OverDriveLimits_t, the FeatureCtrlMask member seems to be controlling
> > which of the "features" of OverDrive would actually be in use. As of
> > yet, I haven't been able to find an index of what the bits in here
> > actually mean. Is there any way you could help me out with that?
>
> I can ask tomorrow.  That said, we are working on OD support and
> should have patches available soon.

Those bits refer to the OD feature bits PP_OD_FEATURE_*.  Looks like
they are missing from smu13_driver_if_v13_0_0.h, but they are the same
as the ones in smu13_driver_if_v13_0_7.h.

Alex

>
> Alex
>
>
>
> >
> > My best guess thus far is that they are by each element of the
> > OverDriveTable_t struct, but that's only just a guess.
> >
> > For reference, here are the values I'm seeing present in each at boot
> > time.
> >
> > Since FeatureCtrlMask is 0b11111001101, the current theory is that the
> > "unsupported" features would be VddGfxVmax, GfxclkFmin, GfxclkFmax. Does
> > that line up with what we'd be expecting for this ASIC?
> >
> > Thanks in advance for any information you can provide. I really
> > appreciate the work that you all do.
> >
> > Thanks,
> > Matt
> >
> > OverDriveLimits:
> >         FeatureCtrlMask: [0x000007cd, 0x000007cd]
> >         VoltageOffsetPerZoneBoundary: [-450, 0]
> >         VddGfxVmax: [0, 0]
> >         IdlePwrSavingFeaturesCtrl: [0x00, 0x00]
> >         RuntimePwrSavingFeaturesCtrl: [0x00, 0x00]
> >         GfxclkFmin: [500, 5000]
> >         GfxclkFmax: [500, 5000]
> >         UclkFmin: [97, 1500]
> >         UclkFmax: [97, 1500]
> >         Ppt: [-10, 15], Tdc: [-10, 0]
> >         FanLinearPwmPoints: [23, 100]
> >         FanLinearTempPoints: [25, 100]
> >         FanMinimumPwm: [23, 100]
> >         AcousticTargetRpmThreshold: [500, 3200]
> >         AcousticLimitRpmThreshold: [500, 3200]
> >         FanTargetTemperature: [25, 105]
> >         FanZeroRpmEnable: [0, 1]
> >         FanZeroRpmStopTemp: [25, 100]
> >         FanMode: [0, 1]
> >         MaxOpTemp: [50, 110]
> > OverDriveTable:
> >         FeatureCtrlMask: 0x00000000
> >         VoltageOffsetPerZoneBoundary[0]: 0
> >         VoltageOffsetPerZoneBoundary[1]: 0
> >         VoltageOffsetPerZoneBoundary[2]: 0
> >         VoltageOffsetPerZoneBoundary[3]: 0
> >         VoltageOffsetPerZoneBoundary[4]: 0
> >         VoltageOffsetPerZoneBoundary[5]: 0
> >         VddGfxVmax: 1150
> >         IdlePwrSavingFeaturesCtrl: 0x00
> >         RuntimePwrSavingFeaturesCtrl: 0x00
> >         GfxclkFmin: 500
> >         GfxclkFmax: 2890
> >         UclkFmin: 97
> >         UclkFmax: 1249
> >         Ppt: 0
> >         Tdc: 0
> >         FanLinearPwmPoints[0]: 0
> >         FanLinearPwmPoints[1]: 0
> >         FanLinearPwmPoints[2]: 0
> >         FanLinearPwmPoints[3]: 0
> >         FanLinearPwmPoints[4]: 0
> >         FanLinearPwmPoints[5]: 0
> >         FanLinearTempPoints[0]: 0
> >         FanLinearTempPoints[1]: 0
> >         FanLinearTempPoints[2]: 0
> >         FanLinearTempPoints[3]: 0
> >         FanLinearTempPoints[4]: 0
> >         FanLinearTempPoints[5]: 0
> >         FanMinimumPwm: 35
> >         AcousticTargetRpmThreshold: 1250
> >         AcousticLimitRpmThreshold: 1500
> >         FanTargetTemperature: 94
> >         FanZeroRpmEnable: 1
> >         FanZeroRpmStopTemp: 55
> >         FanMode: 0
> >         MaxOpTemp: 110


More information about the amd-gfx mailing list