Skip to content
Falcosc edited this page Oct 31, 2021 · 8 revisions

Info

--info                    Show information and most importand power metrics after adjustment

Does display some basic information, like versions and CPU family.

Can be used to monitor your limit usage and see which values are holding you back. If you use it before changing any values, you basically find the default values of your device.

Dump Power Metrics Table

--dump-table              Show whole power metric table before and after adjustment

Combined with any adjustment this option it is useful to detect problems. If something does overwrite your limits it is difficult to differentiate between adjustments does not work and adjustments got overwritten. The --dump-table option can be used to see if the adjustment did change the PM Table entry.

STAPM

--stapm-limit=<u32>       Sustained Power Limit         - STAPM LIMIT (mW)
--stapm-time=<u32>        STAPM constant time (s)

It is the 3rd level Power limit, used after fast limit and after slow limit.

  • Gets overwritten by STTv2.
  • Only usable if you did disable STTv2 (Zen2/Zen3)
  • Only usable if you don't have STTv2 (Zen or Zen+)
  • Values above slow limit or fast limit would not make sense. Fast Limit > Slow Limit > STAPM Limit
  • With STTv2 you don't have this 3rd level. (STAPM constant time will be 1 and Sustained Power Limit will be overwritten by current active limit)

PPT Limit

--fast-limit=<u32>        Actual Power Limit            - PPT LIMIT FAST (mW)
--slow-limit=<u32>        Average Power Limit           - PPT LIMIT SLOW (mW)
--slow-time=<u32>         Slow PPT Constant Time (s)
  • PPT VALUE SLOW (average power draw) gets controlled by SlowPPTTimeConstant(--slow-time)
  • PPT VALUE FAST is the current power draw

PPT APU

--apu-slow-limit=<u32>  APU PPT Slow Power limit for A+A dGPU platform - PPT LIMIT APU (mW)

We are not sure how this limit does work in comparison to the other PPT limits because my Renoir test platform reports no value: Renoir-Tuning-Guide#apu-slow-limit

STTv2

--apu-skin-temp=<u32>    APU Skin Temperature Limit    - STT LIMIT APU (degree C)
--dgpu-skin-temp=<u32>   dGPU Skin Temperature Limit   - STT LIMIT dGPU (degree C)
--skin-temp-limit=<u32>  Skin Temperature Power Limit (mW)

STT does overwrite STAPM Limit with FAST Limit or if STT detects over-temperature the STT power value (--skin-temp-limit) gets applied on STAPM.

Does only exist on Zen2 and Zen3.

TCTL Temp

--tctl-temp=<u32>         Tctl Temperature Limit (degree C)

Here is an example why the --tctl-temp=100 is not checked/enforced fast enough and why you need to set it 5-10°C lower than your prochot limit:

More details at Renoir-Tuning-Guide#tctl-temp

TDC Limit

--vrm-current=<u32>       VRM Current Limit             - TDC LIMIT VDD (mA)
--vrmsoc-current=<u32>    VRM SoC Current Limit         - TDC LIMIT SoC (mA)

Thermal Design Current Limit in mA does define how much current can be used over longer time to avoid VRM overheating.

EDC Limit

--vrmmax-current=<u32>    VRM Maximum Current Limit     - EDC LIMIT VDD (mA)
--vrmsocmax-current=<u32> VRM SoC Maximum Current Limit - EDC LIMIT SoC (mA)

Electrical Design Current Limit in mA is used for peaks in VRM load, even if you are limited by these values for a longer time, you can still have a low average VRM load because EDC does only consider spikes.

PSI0

--psi0-current=<u32>      PSI0 VDD Current Limit (mA)
--psi0soc-current=<u32>   PSI0 SoC Current Limit (mA)

We are not sure what this is doing, I couldn't measure any changes on my Renoir platform if I do reduce these limits.

Frequency

--max-socclk-frequency=<u32>  Maximum SoC Clock Frequency (MHz)
--min-socclk-frequency=<u32>  Minimum SoC Clock Frequency (MHz)
--max-fclk-frequency=<u32>    Maximum Transmission (CPU-GPU) Frequency (MHz)
--min-fclk-frequency=<u32>    Minimum Transmission (CPU-GPU) Frequency (MHz)
--max-vcn=<u32>               Maximum Video Core Next (VCE - Video Coding Engine) (MHz)
--min-vcn=<u32>               Minimum Video Core Next (VCE - Video Coding Engine) (MHz)
--max-lclk=<u32>              Maximum Data Launch Clock (MHz)
--min-lclk=<u32>              Minimum Data Launch Clock (MHz)
--max-gfxclk=<u32>            Maximum GFX Clock (MHz)
--min-gfxclk=<u32>            Minimum GFX Clock (MHz)

Don't work on Zen2 and Zen3 anymore. Some of them are working on Zen and Zen+

Prochot

--prochot-deassertion-ramp=<u32> Ramp Time After Prochot is Deasserted: 
    limit power based on value, higher values does apply tighter limits after prochot is over

Prochot is a safety feature which kicks in to prevent damage. It does limit your CPU to the lowest possible power state.

It is not clear which values do what, but here are some details for Renoir Renoir-Tuning-Guide#prochot-deassertion-ramp

AC-Mode / DC-Mode

--power-saving     Hidden options to improve power efficiency (is set when AC unplugged): 
                       behavior depends on CPU generation, Device and Manufacture
--max-performance  Hidden options to improve performance (is set when AC plugged in): 
                       behavior depends on CPU generation, Device and Manufacture

Each time you change the power source your device will automatically set AC or DC mode to tune some unknown values for power usage. We found out that on Zen, Zen+, Zen2 and Zen3 it does change 3-6 Values known as "Setpoint". These are busy thresholds for frequencies and define how fast you the APU does start to boost: Commonly known as boost delay. We don't know what else gets tuned, and we don't know if each device does use these modes to change the boost delay.

More about what it does on detail on Zen2 can be found here: