Re: Indexing of FeatureCtrlMask for SMU13 OverDrive

2023-02-07 Thread Alex Deucher
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

2023-02-06 Thread Alex Deucher
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

2023-02-06 Thread Matt Coffin
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