Indexing of FeatureCtrlMask for SMU13 OverDrive

Matt Coffin mcoffin13 at gmail.com
Tue Feb 7 01:17:16 UTC 2023


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?

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