On Mon, Feb 6, 2023 at 8:17 PM Matt Coffin <mcoffin13@xxxxxxxxx> 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. 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