Re: Indexing of FeatureCtrlMask for SMU13 OverDrive
On Mon, Feb 6, 2023 at 11:36 PM Alex Deucher wrote: > > On Mon, Feb 6, 2023 at 8:17 PM Matt Coffin 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 0b1001101, 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: [0x07cd, 0x07cd] > > 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: 0x > > 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
Re: Indexing of FeatureCtrlMask for SMU13 OverDrive
On Mon, Feb 6, 2023 at 8:17 PM Matt Coffin 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 0b1001101, 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: [0x07cd, 0x07cd] > 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: 0x > 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
Indexing of FeatureCtrlMask for SMU13 OverDrive
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 0b1001101, 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: [0x07cd, 0x07cd] 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: 0x 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