sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget&/translations/zh_CN/gpu/amdgpu/thermalmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/zh_TW/gpu/amdgpu/thermalmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/it_IT/gpu/amdgpu/thermalmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ja_JP/gpu/amdgpu/thermalmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ko_KR/gpu/amdgpu/thermalmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/sp_SP/gpu/amdgpu/thermalmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h)GPU Power/Thermal Controls and Monitoringh]h)GPU Power/Thermal Controls and Monitoring}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh@/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal.rsthKubh)}(hhh](h)}(hHWMON Interfacesh]hHWMON Interfaces}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(h:The amdgpu driver exposes the following sensor interfaces:h]h:The amdgpu driver exposes the following sensor interfaces:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMo hhhhubh bullet_list)}(hhh](h list_item)}(h(GPU temperature (via the on-die sensor) h]h)}(h'GPU temperature (via the on-die sensor)h]h'GPU temperature (via the on-die sensor)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMq hhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h GPU voltage h]h)}(h GPU voltageh]h GPU voltage}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMs hhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h Northbridge voltage (APUs only) h]h)}(hNorthbridge voltage (APUs only)h]hNorthbridge voltage (APUs only)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMu hjubah}(h]h ]h"]h$]h&]uh1hhhubh)}(h GPU power h]h)}(h GPU powerh]h GPU power}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMw hj+ubah}(h]h ]h"]h$]h&]uh1hhhubh)}(hGPU fan h]h)}(hGPU fanh]hGPU fan}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMy hjDubah}(h]h ]h"]h$]h&]uh1hhhubh)}(hGPU gfx/compute engine clock h]h)}(hGPU gfx/compute engine clockh]hGPU gfx/compute engine clock}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM{ hj]ubah}(h]h ]h"]h$]h&]uh1hhhubh)}(hGPU memory clock (dGPU only) h]h)}(hGPU memory clock (dGPU only)h]hGPU memory clock (dGPU only)}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM} hjvubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhMq hhhhubh)}(h%hwmon interfaces for GPU temperature:h]h%hwmon interfaces for GPU temperature:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hhhhubh)}(hhh](h)}(htemp[1-3]_input: the on die GPU temperature in millidegrees Celsius - temp2_input and temp3_input are supported on SOC15 dGPUs only h]h)}(htemp[1-3]_input: the on die GPU temperature in millidegrees Celsius - temp2_input and temp3_input are supported on SOC15 dGPUs onlyh]htemp[1-3]_input: the on die GPU temperature in millidegrees Celsius - temp2_input and temp3_input are supported on SOC15 dGPUs only}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hktemp[1-3]_label: temperature channel label - temp2_label and temp3_label are supported on SOC15 dGPUs only h]h)}(hjtemp[1-3]_label: temperature channel label - temp2_label and temp3_label are supported on SOC15 dGPUs onlyh]hjtemp[1-3]_label: temperature channel label - temp2_label and temp3_label are supported on SOC15 dGPUs only}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(htemp[1-3]_crit: temperature critical max value in millidegrees Celsius - temp2_crit and temp3_crit are supported on SOC15 dGPUs only h]h)}(htemp[1-3]_crit: temperature critical max value in millidegrees Celsius - temp2_crit and temp3_crit are supported on SOC15 dGPUs onlyh]htemp[1-3]_crit: temperature critical max value in millidegrees Celsius - temp2_crit and temp3_crit are supported on SOC15 dGPUs only}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(htemp[1-3]_crit_hyst: temperature hysteresis for critical limit in millidegrees Celsius - temp2_crit_hyst and temp3_crit_hyst are supported on SOC15 dGPUs only h]h)}(htemp[1-3]_crit_hyst: temperature hysteresis for critical limit in millidegrees Celsius - temp2_crit_hyst and temp3_crit_hyst are supported on SOC15 dGPUs onlyh]htemp[1-3]_crit_hyst: temperature hysteresis for critical limit in millidegrees Celsius - temp2_crit_hyst and temp3_crit_hyst are supported on SOC15 dGPUs only}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(htemp[1-3]_emergency: temperature emergency max value(asic shutdown) in millidegrees Celsius - these are supported on SOC15 dGPUs only h]h)}(htemp[1-3]_emergency: temperature emergency max value(asic shutdown) in millidegrees Celsius - these are supported on SOC15 dGPUs onlyh]htemp[1-3]_emergency: temperature emergency max value(asic shutdown) in millidegrees Celsius - these are supported on SOC15 dGPUs only}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhjhM hhhhubh)}(h!hwmon interfaces for GPU voltage:h]h!hwmon interfaces for GPU voltage:}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hhhhubh)}(hhh](h)}(h0in0_input: the voltage on the GPU in millivolts h]h)}(h/in0_input: the voltage on the GPU in millivoltsh]h/in0_input: the voltage on the GPU in millivolts}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hj>ubah}(h]h ]h"]h$]h&]uh1hhj;ubh)}(h8in1_input: the voltage on the Northbridge in millivolts h]h)}(h7in1_input: the voltage on the Northbridge in millivoltsh]h7in1_input: the voltage on the Northbridge in millivolts}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjWubah}(h]h ]h"]h$]h&]uh1hhj;ubeh}(h]h ]h"]h$]h&]jjuh1hhjPhM hhhhubh)}(hhwmon interfaces for GPU power:h]hhwmon interfaces for GPU power:}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hhhhubh)}(hhh](h)}(h]power1_average: average power used by the SoC in microWatts. On APUs this includes the CPU. h]h)}(h\power1_average: average power used by the SoC in microWatts. On APUs this includes the CPU.h]h\power1_average: average power used by the SoC in microWatts. On APUs this includes the CPU.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hapower1_input: instantaneous power used by the SoC in microWatts. On APUs this includes the CPU. h]h)}(h`power1_input: instantaneous power used by the SoC in microWatts. On APUs this includes the CPU.h]h`power1_input: instantaneous power used by the SoC in microWatts. On APUs this includes the CPU.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h4power1_cap_min: minimum cap supported in microWatts h]h)}(h3power1_cap_min: minimum cap supported in microWattsh]h3power1_cap_min: minimum cap supported in microWatts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h4power1_cap_max: maximum cap supported in microWatts h]h)}(h3power1_cap_max: maximum cap supported in microWattsh]h3power1_cap_max: maximum cap supported in microWatts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h-power1_cap: selected power cap in microWatts h]h)}(h,power1_cap: selected power cap in microWattsh]h,power1_cap: selected power cap in microWatts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhjhM hhhhubh)}(hhwmon interfaces for GPU fan:h]hhwmon interfaces for GPU fan:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hhhhubh)}(hhh](h)}(h/pwm1: pulse width modulation fan level (0-255) h]h)}(h.pwm1: pulse width modulation fan level (0-255)h]h.pwm1: pulse width modulation fan level (0-255)}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hpwm1_enable: pulse width modulation fan control method (0: no fan speed control, 1: manual fan speed control using pwm interface, 2: automatic fan speed control) h]h)}(hpwm1_enable: pulse width modulation fan control method (0: no fan speed control, 1: manual fan speed control using pwm interface, 2: automatic fan speed control)h]hpwm1_enable: pulse width modulation fan control method (0: no fan speed control, 1: manual fan speed control using pwm interface, 2: automatic fan speed control)}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hj6ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h?pwm1_min: pulse width modulation fan control minimum level (0) h]h)}(h>pwm1_min: pulse width modulation fan control minimum level (0)h]h>pwm1_min: pulse width modulation fan control minimum level (0)}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjOubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hApwm1_max: pulse width modulation fan control maximum level (255) h]h)}(h@pwm1_max: pulse width modulation fan control maximum level (255)h]h@pwm1_max: pulse width modulation fan control maximum level (255)}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjhubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h5fan1_min: a minimum value Unit: revolution/min (RPM) h]h)}(h4fan1_min: a minimum value Unit: revolution/min (RPM)h]h4fan1_min: a minimum value Unit: revolution/min (RPM)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h5fan1_max: a maximum value Unit: revolution/max (RPM) h]h)}(h4fan1_max: a maximum value Unit: revolution/max (RPM)h]h4fan1_max: a maximum value Unit: revolution/max (RPM)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hfan1_input: fan speed in RPM h]h)}(hfan1_input: fan speed in RPMh]hfan1_input: fan speed in RPM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h?fan[1-\*]_target: Desired fan speed Unit: revolution/min (RPM) h]h)}(h>fan[1-\*]_target: Desired fan speed Unit: revolution/min (RPM)h]h>fan[1-*]_target: Desired fan speed Unit: revolution/min (RPM)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hEfan[1-\*]_enable: Enable or disable the sensors.1: Enable 0: Disable h]h)}(hDfan[1-\*]_enable: Enable or disable the sensors.1: Enable 0: Disableh]hDfan[1-*]_enable: Enable or disable the sensors.1: Enable 0: Disable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhj/hM hhhhubhdefinition_list)}(hhh]hdefinition_list_item)}(hNOTE: DO NOT set the fan speed via "pwm1" and "fan[1-\*]_target" interfaces at the same time. That will get the former one overridden. h](hterm)}(h]NOTE: DO NOT set the fan speed via "pwm1" and "fan[1-\*]_target" interfaces at the same time.h]heNOTE: DO NOT set the fan speed via “pwm1” and “fan[1-*]_target” interfaces at the same time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hj ubh definition)}(hhh]h)}(h(That will get the former one overridden.h]h(That will get the former one overridden.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hj"ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hjhM hjubah}(h]h ]h"]h$]h&]uh1jhhhhhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chNubh)}(h hwmon interfaces for GPU clocks:h]h hwmon interfaces for GPU clocks:}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hhhhubh)}(hhh](h)}(h,freq1_input: the gfx/compute clock in hertz h]h)}(h+freq1_input: the gfx/compute clock in hertzh]h+freq1_input: the gfx/compute clock in hertz}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjXubah}(h]h ]h"]h$]h&]uh1hhjUubh)}(h'freq2_input: the memory clock in hertz h]h)}(h&freq2_input: the memory clock in hertzh]h&freq2_input: the memory clock in hertz}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjqubah}(h]h ]h"]h$]h&]uh1hhjUubeh}(h]h ]h"]h$]h&]jjuh1hhjjhM hhhhubh)}(hMYou can use hwmon tools like sensors to view this information on your system.h]hMYou can use hwmon tools like sensors to view this information on your system.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hhhhubeh}(h]hwmon-interfacesah ]h"]hwmon interfacesah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h GPU sysfs Power State Interfacesh]h GPU sysfs Power State Interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK ubh)}(h/GPU power controls are exposed via sysfs files.h]h/GPU power controls are exposed via sysfs files.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(hpower_dpm_stateh]hpower_dpm_state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hXThe power_dpm_state file is a legacy interface and is only provided for backwards compatibility. The amdgpu driver provides a sysfs API for adjusting certain power related parameters. The file power_dpm_state is used for this. It accepts the following arguments:h]hXThe power_dpm_state file is a legacy interface and is only provided for backwards compatibility. The amdgpu driver provides a sysfs API for adjusting certain power related parameters. The file power_dpm_state is used for this. It accepts the following arguments:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjhhubh)}(hhh](h)}(hbattery h]h)}(hbatteryh]hbattery}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h balanced h]h)}(hbalancedh]hbalanced}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h performance h]h)}(h performanceh]h performance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhjhKhjhhubh)}(hbatteryh]hbattery}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjhhubh)}(hOn older GPUs, the vbios provided a special power state for battery operation. Selecting battery switched to this state. This is no longer provided on newer GPUs so the option does nothing in that case.h]hOn older GPUs, the vbios provided a special power state for battery operation. Selecting battery switched to this state. This is no longer provided on newer GPUs so the option does nothing in that case.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjhhubh)}(hbalancedh]hbalanced}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjhhubh)}(hOn older GPUs, the vbios provided a special power state for balanced operation. Selecting balanced switched to this state. This is no longer provided on newer GPUs so the option does nothing in that case.h]hOn older GPUs, the vbios provided a special power state for balanced operation. Selecting balanced switched to this state. This is no longer provided on newer GPUs so the option does nothing in that case.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjhhubh)}(h performanceh]h performance}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjhhubh)}(hOn older GPUs, the vbios provided a special power state for performance operation. Selecting performance switched to this state. This is no longer provided on newer GPUs so the option does nothing in that case.h]hOn older GPUs, the vbios provided a special power state for performance operation. Selecting performance switched to this state. This is no longer provided on newer GPUs so the option does nothing in that case.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chKhjhhubeh}(h]power-dpm-stateah ]h"]power_dpm_stateah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h!power_dpm_force_performance_levelh]h!power_dpm_force_performance_level}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hThe amdgpu driver provides a sysfs API for adjusting certain power related parameters. The file power_dpm_force_performance_level is used for this. It accepts the following arguments:h]hThe amdgpu driver provides a sysfs API for adjusting certain power related parameters. The file power_dpm_force_performance_level is used for this. It accepts the following arguments:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM hjhhubh)}(hhh](h)}(hauto h]h)}(hautoh]hauto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hlow h]h)}(hlowh]hlow}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhigh h]h)}(hhighh]hhigh}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hmanual h]h)}(hmanualh]hmanual}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hprofile_standard h]h)}(hprofile_standardh]hprofile_standard}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj#ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hprofile_min_sclk h]h)}(hprofile_min_sclkh]hprofile_min_sclk}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj<ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hprofile_min_mclk h]h)}(hprofile_min_mclkh]hprofile_min_mclk}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjUubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h profile_peak h]h)}(h profile_peakh]h profile_peak}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjnubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhjhMhjhhubh)}(hautoh]hauto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(hWhen auto is selected, the driver will attempt to dynamically select the optimal power profile for current conditions in the driver.h]hWhen auto is selected, the driver will attempt to dynamically select the optimal power profile for current conditions in the driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM!hjhhubh)}(hlowh]hlow}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM$hjhhubh)}(hFWhen low is selected, the clocks are forced to the lowest power state.h]hFWhen low is selected, the clocks are forced to the lowest power state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM&hjhhubh)}(hhighh]hhigh}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM(hjhhubh)}(hHWhen high is selected, the clocks are forced to the highest power state.h]hHWhen high is selected, the clocks are forced to the highest power state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM*hjhhubh)}(hmanualh]hmanual}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM,hjhhubh)}(hXWhen manual is selected, the user can manually adjust which power states are enabled for each clock domain via the sysfs pp_dpm_mclk, pp_dpm_sclk, and pp_dpm_pcie files and adjust the power state transition heuristics via the pp_power_profile_mode sysfs file.h]hXWhen manual is selected, the user can manually adjust which power states are enabled for each clock domain via the sysfs pp_dpm_mclk, pp_dpm_sclk, and pp_dpm_pcie files and adjust the power state transition heuristics via the pp_power_profile_mode sysfs file.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM.hjhhubh)}(h?profile_standard profile_min_sclk profile_min_mclk profile_peakh]h?profile_standard profile_min_sclk profile_min_mclk profile_peak}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM3hjhhubh)}(hX*When the profiling modes are selected, clock and power gating are disabled and the clocks are set for different profiling cases. This mode is recommended for profiling specific work loads where you do not want clock or power gating for clock fluctuation to interfere with your results. profile_standard sets the clocks to a fixed clock level which varies from asic to asic. profile_min_sclk forces the sclk to the lowest level. profile_min_mclk forces the mclk to the lowest level. profile_peak sets all clocks (mclk, sclk, pcie) to the highest levels.h]hX*When the profiling modes are selected, clock and power gating are disabled and the clocks are set for different profiling cases. This mode is recommended for profiling specific work loads where you do not want clock or power gating for clock fluctuation to interfere with your results. profile_standard sets the clocks to a fixed clock level which varies from asic to asic. profile_min_sclk forces the sclk to the lowest level. profile_min_mclk forces the mclk to the lowest level. profile_peak sets all clocks (mclk, sclk, pcie) to the highest levels.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM8hjhhubeh}(h]!power-dpm-force-performance-levelah ]h"]!power_dpm_force_performance_levelah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hpp_tableh]hpp_table}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hhhhhKubh)}(hXThe amdgpu driver provides a sysfs API for uploading new powerplay tables. The file pp_table is used for this. Reading the file will dump the current power play table. Writing to the file will attempt to upload a new powerplay table and re-initialize powerplay using that new table.h]hXThe amdgpu driver provides a sysfs API for uploading new powerplay tables. The file pp_table is used for this. Reading the file will dump the current power play table. Writing to the file will attempt to upload a new powerplay table and re-initialize powerplay using that new table.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:31: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj+hhubeh}(h]pp-tableah ]h"]pp_tableah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(hpp_od_clk_voltageh]hpp_od_clk_voltage}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShhhhhK#ubh)}(hThe amdgpu driver provides a sysfs API for adjusting the clocks and voltages in each power level within a power state. The pp_od_clk_voltage is used for this.h]hThe amdgpu driver provides a sysfs API for adjusting the clocks and voltages in each power level within a power state. The pp_od_clk_voltage is used for this.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMZhjShhubh)}(hNote that the actual memory controller clock rate are exposed, not the effective memory clock of the DRAMs. To translate it, use the following formula:h]hNote that the actual memory controller clock rate are exposed, not the effective memory clock of the DRAMs. To translate it, use the following formula:}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM^hjShhubh)}(hClock conversion (Mhz):h]hClock conversion (Mhz):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMbhjShhubh)}(h9HBM: effective_memory_clock = memory_controller_clock * 1h]h9HBM: effective_memory_clock = memory_controller_clock * 1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMdhjShhubh)}(h8G5: effective_memory_clock = memory_controller_clock * 1h]h8G5: effective_memory_clock = memory_controller_clock * 1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMfhjShhubh)}(h8G6: effective_memory_clock = memory_controller_clock * 2h]h8G6: effective_memory_clock = memory_controller_clock * 2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhhjShhubh)}(hDRAM data rate (MT/s):h]hDRAM data rate (MT/s):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMjhjShhubh)}(h+HBM: effective_memory_clock * 2 = data_rateh]h+HBM: effective_memory_clock * 2 = data_rate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMlhjShhubh)}(h*G5: effective_memory_clock * 4 = data_rateh]h*G5: effective_memory_clock * 4 = data_rate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMnhjShhubh)}(h*G6: effective_memory_clock * 8 = data_rateh]h*G6: effective_memory_clock * 8 = data_rate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMphjShhubh)}(hBandwidth (MB/s):h]hBandwidth (MB/s):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMrhjShhubh)}(h1data_rate * vram_bit_width / 8 = memory_bandwidthh]h1data_rate * vram_bit_width / 8 = memory_bandwidth}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMthjShhubh)}(hSome examples:h]hSome examples:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMvhjShhubh)}(h G5 on RX460:h]h G5 on RX460:}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMxhjShhubh)}(h"memory_controller_clock = 1750 Mhzh]h"memory_controller_clock = 1750 Mhz}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMzhjShhubh)}(h0effective_memory_clock = 1750 Mhz * 1 = 1750 Mhzh]h0effective_memory_clock = 1750 Mhz * 1 = 1750 Mhz}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM|hjShhubh)}(h data rate = 1750 * 4 = 7000 MT/sh]h data rate = 1750 * 4 = 7000 MT/s}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM~hjShhubh)}(h4memory_bandwidth = 7000 * 128 bits / 8 = 112000 MB/sh]h4memory_bandwidth = 7000 * 128 bits / 8 = 112000 MB/s}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(h G6 on RX5700:h]h G6 on RX5700:}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(h!memory_controller_clock = 875 Mhzh]h!memory_controller_clock = 875 Mhz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(h/effective_memory_clock = 875 Mhz * 2 = 1750 Mhzh]h/effective_memory_clock = 875 Mhz * 2 = 1750 Mhz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(h!data rate = 1750 * 8 = 14000 MT/sh]h!data rate = 1750 * 8 = 14000 MT/s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(h5memory_bandwidth = 14000 * 256 bits / 8 = 448000 MB/sh]h5memory_bandwidth = 14000 * 256 bits / 8 = 448000 MB/s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(h!< For Vega10 and previous ASICs >h]h!< For Vega10 and previous ASICs >}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hReading the file will display:h]hReading the file will display:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hhh](h)}(h;a list of engine clock levels and voltages labeled OD_SCLK h]h)}(h:a list of engine clock levels and voltages labeled OD_SCLKh]h:a list of engine clock levels and voltages labeled OD_SCLK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h;a list of memory clock levels and voltages labeled OD_MCLK h]h)}(h:a list of memory clock levels and voltages labeled OD_MCLKh]h:a list of memory clock levels and voltages labeled OD_MCLK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hDa list of valid ranges for sclk, mclk, and voltage labeled OD_RANGE h]h)}(hCa list of valid ranges for sclk, mclk, and voltage labeled OD_RANGEh]hCa list of valid ranges for sclk, mclk, and voltage labeled OD_RANGE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhjhMhjShhubh)}(hXTo manually adjust these settings, first select manual using power_dpm_force_performance_level. Enter a new value for each level by writing a string that contains "s/m level clock voltage" to the file. E.g., "s 1 500 820" will update sclk level 1 to be 500 MHz at 820 mV; "m 0 350 810" will update mclk level 0 to be 350 MHz at 810 mV. When you have edited all of the states as needed, write "c" (commit) to the file to commit your changes. If you want to reset to the default power levels, write "r" (reset) to the file to reset them.h]hX.To manually adjust these settings, first select manual using power_dpm_force_performance_level. Enter a new value for each level by writing a string that contains “s/m level clock voltage” to the file. E.g., “s 1 500 820” will update sclk level 1 to be 500 MHz at 820 mV; “m 0 350 810” will update mclk level 0 to be 350 MHz at 810 mV. When you have edited all of the states as needed, write “c” (commit) to the file to commit your changes. If you want to reset to the default power levels, write “r” (reset) to the file to reset them.}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(h< For Vega20 and newer ASICs >h]h< For Vega20 and newer ASICs >}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hReading the file will display:h]hReading the file will display:}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hhh](h)}(h1minimum and maximum engine clock labeled OD_SCLK h]h)}(h0minimum and maximum engine clock labeled OD_SCLKh]h0minimum and maximum engine clock labeled OD_SCLK}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj_ ubah}(h]h ]h"]h$]h&]uh1hhj\ ubh)}(hVminimum(not available for Vega20 and Navi1x) and maximum memory clock labeled OD_MCLK h]h)}(hUminimum(not available for Vega20 and Navi1x) and maximum memory clock labeled OD_MCLKh]hUminimum(not available for Vega20 and Navi1x) and maximum memory clock labeled OD_MCLK}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjx ubah}(h]h ]h"]h$]h&]uh1hhj\ ubh)}(hthree points labeled OD_VDDC_CURVE. They can be used to calibrate the sclk voltage curve. This is available for Vega20 and NV1X. h]h)}(hthree points labeled OD_VDDC_CURVE. They can be used to calibrate the sclk voltage curve. This is available for Vega20 and NV1X.h]hthree points labeled OD_VDDC_CURVE. They can be used to calibrate the sclk voltage curve. This is available for Vega20 and NV1X.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj ubah}(h]h ]h"]h$]h&]uh1hhj\ ubh)}(hX-voltage offset(in mV) applied on target voltage calculation. This is available for Sienna Cichlid, Navy Flounder, Dimgrey Cavefish and some later SMU13 ASICs. For these ASICs, the target voltage calculation can be illustrated by "voltage = voltage calculated from v/f curve + overdrive vddgfx offset" h]h)}(hX,voltage offset(in mV) applied on target voltage calculation. This is available for Sienna Cichlid, Navy Flounder, Dimgrey Cavefish and some later SMU13 ASICs. For these ASICs, the target voltage calculation can be illustrated by "voltage = voltage calculated from v/f curve + overdrive vddgfx offset"h]hX0voltage offset(in mV) applied on target voltage calculation. This is available for Sienna Cichlid, Navy Flounder, Dimgrey Cavefish and some later SMU13 ASICs. For these ASICs, the target voltage calculation can be illustrated by “voltage = voltage calculated from v/f curve + overdrive vddgfx offset”}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj ubah}(h]h ]h"]h$]h&]uh1hhj\ ubh)}(h_a list of valid ranges for sclk, mclk, voltage curve points or voltage offset labeled OD_RANGE h]h)}(h^a list of valid ranges for sclk, mclk, voltage curve points or voltage offset labeled OD_RANGEh]h^a list of valid ranges for sclk, mclk, voltage curve points or voltage offset labeled OD_RANGE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj ubah}(h]h ]h"]h$]h&]uh1hhj\ ubeh}(h]h ]h"]h$]h&]jjuh1hhjq hMhjShhubh)}(h < For APUs >h]h < For APUs >}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hReading the file will display:h]hReading the file will display:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hhh](h)}(h1minimum and maximum engine clock labeled OD_SCLK h]h)}(h0minimum and maximum engine clock labeled OD_SCLKh]h0minimum and maximum engine clock labeled OD_SCLK}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj ubah}(h]h ]h"]h$]h&]uh1hhj ubh)}(h1a list of valid ranges for sclk labeled OD_RANGE h]h)}(h0a list of valid ranges for sclk labeled OD_RANGEh]h0a list of valid ranges for sclk labeled OD_RANGE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj ubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]jjuh1hhj hMhjShhubh)}(h< For VanGogh >h]h< For VanGogh >}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hReading the file will display:h]hReading the file will display:}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hhh](h)}(h0minimum and maximum engine clock labeled OD_SCLKh]h)}(hj^ h]h0minimum and maximum engine clock labeled OD_SCLK}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj\ ubah}(h]h ]h"]h$]h&]uh1hhjY ubh)}(h0minimum and maximum core clocks labeled OD_CCLK h]h)}(h/minimum and maximum core clocks labeled OD_CCLKh]h/minimum and maximum core clocks labeled OD_CCLK}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjt ubah}(h]h ]h"]h$]h&]uh1hhjY ubh)}(h:a list of valid ranges for sclk and cclk labeled OD_RANGE h]h)}(h9a list of valid ranges for sclk and cclk labeled OD_RANGEh]h9a list of valid ranges for sclk and cclk labeled OD_RANGE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj ubah}(h]h ]h"]h$]h&]uh1hhjY ubeh}(h]h ]h"]h$]h&]jjuh1hhjm hMhjShhubh)}(h"To manually adjust these settings:h]h"To manually adjust these settings:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjShhubh)}(hhh](h)}(h pp_dpm_sclk/mclk/pcie" E.g.,h]hTo manually adjust these states, first select manual using power_dpm_force_performance_level. Secondly, enter a new value for each level by inputing a string that contains “ echo xx xx xx > pp_dpm_sclk/mclk/pcie” E.g.,}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:43: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjN hhubj )}(hecho "4 5 6" > pp_dpm_sclkh]hecho "4 5 6" > pp_dpm_sclk}hj sbah}(h]h ]h"]h$]h&]j j forcelanguagebashhighlight_args}uh1j he/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:43: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjN hhubh)}(h$will enable sclk levels 4, 5, and 6.h]h$will enable sclk levels 4, 5, and 6.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:43: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjN hhubh)}(h>NOTE: change to the dcefclk max dpm level is not supported nowh]h>NOTE: change to the dcefclk max dpm level is not supported now}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:43: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjN hhubeh}(h]pp-dpmah ]h"]pp_dpm_*ah$]h&]uh1hhjhhhhhK)ubh)}(hhh](h)}(hpp_power_profile_modeh]hpp_power_profile_mode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhK/ubh)}(hThe amdgpu driver provides a sysfs API for adjusting the heuristics related to switching between power levels in a power state. The file pp_power_profile_mode is used for this.h]hThe amdgpu driver provides a sysfs API for adjusting the heuristics related to switching between power levels in a power state. The file pp_power_profile_mode is used for this.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:49: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM&hj hhubh)}(hReading this file outputs a list of all of the predefined power profiles and the relevant heuristics settings for that profile.h]hReading this file outputs a list of all of the predefined power profiles and the relevant heuristics settings for that profile.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:49: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM*hj hhubh)}(hXTo select a profile or create a custom profile, first select manual using power_dpm_force_performance_level. Writing the number of a predefined profile to pp_power_profile_mode will enable those heuristics. To create a custom set of heuristics, write a string of numbers to the file starting with the number of the custom profile along with a setting for each heuristic parameter. Due to differences across asic families the heuristic parameters vary from family to family. Additionally, you can apply the custom heuristics to different clock domains. Each clock domain is considered a distinct operation so if you modify the gfxclk heuristics and then the memclk heuristics, the all of the custom heuristics will be retained until you switch to another profile.h]hXTo select a profile or create a custom profile, first select manual using power_dpm_force_performance_level. Writing the number of a predefined profile to pp_power_profile_mode will enable those heuristics. To create a custom set of heuristics, write a string of numbers to the file starting with the number of the custom profile along with a setting for each heuristic parameter. Due to differences across asic families the heuristic parameters vary from family to family. Additionally, you can apply the custom heuristics to different clock domains. Each clock domain is considered a distinct operation so if you modify the gfxclk heuristics and then the memclk heuristics, the all of the custom heuristics will be retained until you switch to another profile.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:49: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM-hj hhubeh}(h]pp-power-profile-modeah ]h"]pp_power_profile_modeah$]h&]uh1hhjhhhhhK/ubh)}(hhh](h)}(h pm_policyh]h pm_policy}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj. hhhhhK5ubh)}(hCertain SOCs can support different power policies to optimize application performance. However, this policy is provided only at SOC level and not at a per-process level. This is useful especially when entire SOC is utilized for dedicated workload.h]hCertain SOCs can support different power policies to optimize application performance. However, this policy is provided only at SOC level and not at a per-process level. This is useful especially when entire SOC is utilized for dedicated workload.}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM(hj. hhubh)}(hThe amdgpu driver provides a sysfs API for selecting the policy. Presently, only two types of policies are supported through this interface.h]hThe amdgpu driver provides a sysfs API for selecting the policy. Presently, only two types of policies are supported through this interface.}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM-hj. hhubh block_quote)}(hXPstate Policy Selection - This is to select different Pstate profiles which decides clock/throttling preferences. XGMI PLPD Policy Selection - When multiple devices are connected over XGMI, this helps to select policy to be applied for per link power down. h](h)}(hqPstate Policy Selection - This is to select different Pstate profiles which decides clock/throttling preferences.h]hqPstate Policy Selection - This is to select different Pstate profiles which decides clock/throttling preferences.}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM0hj_ ubh)}(hXGMI PLPD Policy Selection - When multiple devices are connected over XGMI, this helps to select policy to be applied for per link power down.h]hXGMI PLPD Policy Selection - When multiple devices are connected over XGMI, this helps to select policy to be applied for per link power down.}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM3hj_ ubeh}(h]h ]h"]h$]h&]uh1j] hjq hM0hj. hhubh)}(hX The list of available policies and policy levels vary between SOCs. They can be viewed under pm_policy node directory. If SOC doesn't support any policy, this node won't be available. The different policies supported will be available as separate nodes under pm_policy.h]hXThe list of available policies and policy levels vary between SOCs. They can be viewed under pm_policy node directory. If SOC doesn’t support any policy, this node won’t be available. The different policies supported will be available as separate nodes under pm_policy.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM6hj. hhubj^ )}(h5cat /sys/bus/pci/devices/.../pm_policy/ h]h)}(h4cat /sys/bus/pci/devices/.../pm_policy/h]h4cat /sys/bus/pci/devices/.../pm_policy/}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM;hj ubah}(h]h ]h"]h$]h&]uh1j] hj hM;hj. hhubh)}(hReading the policy file shows the different levels supported. The level which is applied presently is denoted by * (asterisk). E.g.,h]hReading the policy file shows the different levels supported. The level which is applied presently is denoted by * (asterisk). E.g.,}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM=hj. hhubj )}(hcat /sys/bus/pci/devices/.../pm_policy/soc_pstate 0 : soc_pstate_default 1 : soc_pstate_0 2 : soc_pstate_1* 3 : soc_pstate_2 cat /sys/bus/pci/devices/.../pm_policy/xgmi_plpd 0 : plpd_disallow 1 : plpd_default 2 : plpd_optimized*h]hcat /sys/bus/pci/devices/.../pm_policy/soc_pstate 0 : soc_pstate_default 1 : soc_pstate_0 2 : soc_pstate_1* 3 : soc_pstate_2 cat /sys/bus/pci/devices/.../pm_policy/xgmi_plpd 0 : plpd_disallow 1 : plpd_default 2 : plpd_optimized*}hj sbah}(h]h ]h"]h$]h&]j j j j consolej }uh1j he/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM@hj. hhubh)}(hTo apply a specific policyh]hTo apply a specific policy}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMMhj. hhubh)}(hB"echo > /sys/bus/pci/devices/.../pm_policy/"h]hF“echo > /sys/bus/pci/devices/.../pm_policy/”}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMOhj. hhubh)}(hzFor the levels listed in the example above, to select "plpd_optimized" for XGMI and "soc_pstate_2" for soc pstate policy -h]hFor the levels listed in the example above, to select “plpd_optimized” for XGMI and “soc_pstate_2” for soc pstate policy -}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMQhj. hhubj )}(hpecho "2" > /sys/bus/pci/devices/.../pm_policy/xgmi_plpd echo "3" > /sys/bus/pci/devices/.../pm_policy/soc_pstateh]hpecho "2" > /sys/bus/pci/devices/.../pm_policy/xgmi_plpd echo "3" > /sys/bus/pci/devices/.../pm_policy/soc_pstate}hj sbah}(h]h ]h"]h$]h&]j j j j consolej }uh1j he/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMThj. hhubeh}(h] pm-policyah ]h"] pm_policyah$]h&]uh1hhjhhhhhK5ubh)}(hhh](h)}(h\*_busy_percenth]h*_busy_percent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhK;ubh)}(hThe amdgpu driver provides a sysfs API for reading how busy the GPU is as a percentage. The file gpu_busy_percent is used for this. The SMU firmware computes a percentage of load based on the aggregate activity level in the IP cores.h]hThe amdgpu driver provides a sysfs API for reading how busy the GPU is as a percentage. The file gpu_busy_percent is used for this. The SMU firmware computes a percentage of load based on the aggregate activity level in the IP cores.}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:61: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj hhubh)}(hThe amdgpu driver provides a sysfs API for reading how busy the VRAM is as a percentage. The file mem_busy_percent is used for this. The SMU firmware computes a percentage of load based on the aggregate activity level in the IP cores.h]hThe amdgpu driver provides a sysfs API for reading how busy the VRAM is as a percentage. The file mem_busy_percent is used for this. The SMU firmware computes a percentage of load based on the aggregate activity level in the IP cores.}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:64: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj hhubeh}(h] busy-percentah ]h"]*_busy_percentah$]h&]uh1hhjhhhhhK;ubh)}(hhh](h)}(h gpu_metricsh]h gpu_metrics}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjL hhhhhKDubh)}(hThe amdgpu driver provides a sysfs API for retrieving current gpu metrics data. The file gpu_metrics is used for this. Reading the file will dump all the current gpu metrics data.h]hThe amdgpu driver provides a sysfs API for retrieving current gpu metrics data. The file gpu_metrics is used for this. Reading the file will dump all the current gpu metrics data.}(hj] hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:70: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjL hhubh)}(hThese data include temperature, frequency, engines utilization, power consume, throttler status, fan speed and cpu core statistics( available for APU only). That's it will give a snapshot of all sensors at the same time.h]hThese data include temperature, frequency, engines utilization, power consume, throttler status, fan speed and cpu core statistics( available for APU only). That’s it will give a snapshot of all sensors at the same time.}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:70: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjL hhubeh}(h] gpu-metricsah ]h"] gpu_metricsah$]h&]uh1hhjhhhhhKDubh)}(hhh](h)}(h fan_curveh]h fan_curve}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKJubh)}(h]The amdgpu driver provides a sysfs API for checking and adjusting the fan control curve line.h]h]The amdgpu driver provides a sysfs API for checking and adjusting the fan control curve line.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM^hj hhubh)}(hReading back the file shows you the current settings(temperature in Celsius degree and fan speed in pwm) applied to every anchor point of the curve line and their permitted ranges if changable.h]hReading back the file shows you the current settings(temperature in Celsius degree and fan speed in pwm) applied to every anchor point of the curve line and their permitted ranges if changable.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMahj hhubh)}(hWriting a desired string(with the format like "anchor_point_index temperature fan_speed_in_pwm") to the file, change the settings for the specific anchor point accordingly.h]hWriting a desired string(with the format like “anchor_point_index temperature fan_speed_in_pwm”) to the file, change the settings for the specific anchor point accordingly.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMehj hhubh)}(hZWhen you have finished the editing, write "c" (commit) to the file to commit your changes.h]h^When you have finished the editing, write “c” (commit) to the file to commit your changes.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMihj hhubh)}(hVIf you want to reset to the default value, write "r" (reset) to the file to reset themh]hZIf you want to reset to the default value, write “r” (reset) to the file to reset them}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMlhj hhubh)}(hXvThere are two fan control modes supported: auto and manual. With auto mode, PMFW handles the fan speed control(how fan speed reacts to ASIC temperature). While with manual mode, users can set their own fan curve line as what described here. Normally the ASIC is booted up with auto mode. Any settings via this interface will switch the fan control to manual mode implicitly.h]hXvThere are two fan control modes supported: auto and manual. With auto mode, PMFW handles the fan speed control(how fan speed reacts to ASIC temperature). While with manual mode, users can set their own fan curve line as what described here. Normally the ASIC is booted up with auto mode. Any settings via this interface will switch the fan control to manual mode implicitly.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMohj hhubeh}(h] fan-curveah ]h"] fan_curveah$]h&]uh1hhjhhhhhKJubh)}(hhh](h)}(hacoustic_limit_rpm_thresholdh]hacoustic_limit_rpm_threshold}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKPubh)}(hlThe amdgpu driver provides a sysfs API for checking and adjusting the acoustic limit in RPM for fan control.h]hlThe amdgpu driver provides a sysfs API for checking and adjusting the acoustic limit in RPM for fan control.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj hhubh)}(hZReading back the file shows you the current setting and the permitted ranges if changable.h]hZReading back the file shows you the current setting and the permitted ranges if changable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj hhubh)}(h?Writing an integer to the file, change the setting accordingly.h]h?Writing an integer to the file, change the setting accordingly.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj hhubh)}(hZWhen you have finished the editing, write "c" (commit) to the file to commit your changes.h]h^When you have finished the editing, write “c” (commit) to the file to commit your changes.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj hhubh)}(hVIf you want to reset to the default value, write "r" (reset) to the file to reset themh]hZIf you want to reset to the default value, write “r” (reset) to the file to reset them}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj hhubh)}(hThis setting works under auto fan control mode only. It adjusts the PMFW's behavior about the maximum speed in RPM the fan can spin. Setting via this interface will switch the fan control to auto mode implicitly.h]hThis setting works under auto fan control mode only. It adjusts the PMFW’s behavior about the maximum speed in RPM the fan can spin. Setting via this interface will switch the fan control to auto mode implicitly.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj hhubeh}(h]acoustic-limit-rpm-thresholdah ]h"]acoustic_limit_rpm_thresholdah$]h&]uh1hhjhhhhhKPubh)}(hhh](h)}(hacoustic_target_rpm_thresholdh]hacoustic_target_rpm_threshold}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihhhhhKVubh)}(hmThe amdgpu driver provides a sysfs API for checking and adjusting the acoustic target in RPM for fan control.h]hmThe amdgpu driver provides a sysfs API for checking and adjusting the acoustic target in RPM for fan control.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjihhubh)}(hZReading back the file shows you the current setting and the permitted ranges if changable.h]hZReading back the file shows you the current setting and the permitted ranges if changable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjihhubh)}(h?Writing an integer to the file, change the setting accordingly.h]h?Writing an integer to the file, change the setting accordingly.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjihhubh)}(hZWhen you have finished the editing, write "c" (commit) to the file to commit your changes.h]h^When you have finished the editing, write “c” (commit) to the file to commit your changes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjihhubh)}(hVIf you want to reset to the default value, write "r" (reset) to the file to reset themh]hZIf you want to reset to the default value, write “r” (reset) to the file to reset them}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjihhubh)}(hXZThis setting works under auto fan control mode only. It can co-exist with other settings which can work also under auto mode. It adjusts the PMFW's behavior about the maximum speed in RPM the fan can spin when ASIC temperature is not greater than target temperature. Setting via this interface will switch the fan control to auto mode implicitly.h]hX\This setting works under auto fan control mode only. It can co-exist with other settings which can work also under auto mode. It adjusts the PMFW’s behavior about the maximum speed in RPM the fan can spin when ASIC temperature is not greater than target temperature. Setting via this interface will switch the fan control to auto mode implicitly.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjihhubeh}(h]acoustic-target-rpm-thresholdah ]h"]acoustic_target_rpm_thresholdah$]h&]uh1hhjhhhhhKVubh)}(hhh](h)}(hfan_target_temperatureh]hfan_target_temperature}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK\ubh)}(hzThe amdgpu driver provides a sysfs API for checking and adjusting the target tempeature in Celsius degree for fan control.h]hzThe amdgpu driver provides a sysfs API for checking and adjusting the target tempeature in Celsius degree for fan control.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(hZReading back the file shows you the current setting and the permitted ranges if changable.h]hZReading back the file shows you the current setting and the permitted ranges if changable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(h?Writing an integer to the file, change the setting accordingly.h]h?Writing an integer to the file, change the setting accordingly.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(hZWhen you have finished the editing, write "c" (commit) to the file to commit your changes.h]h^When you have finished the editing, write “c” (commit) to the file to commit your changes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(hVIf you want to reset to the default value, write "r" (reset) to the file to reset themh]hZIf you want to reset to the default value, write “r” (reset) to the file to reset them}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(hXxThis setting works under auto fan control mode only. It can co-exist with other settings which can work also under auto mode. Paring with the acoustic_target_rpm_threshold setting, they define the maximum speed in RPM the fan can spin when ASIC temperature is not greater than target temperature. Setting via this interface will switch the fan control to auto mode implicitly.h]hXxThis setting works under auto fan control mode only. It can co-exist with other settings which can work also under auto mode. Paring with the acoustic_target_rpm_threshold setting, they define the maximum speed in RPM the fan can spin when ASIC temperature is not greater than target temperature. Setting via this interface will switch the fan control to auto mode implicitly.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM"hjhhubeh}(h]fan-target-temperatureah ]h"]fan_target_temperatureah$]h&]uh1hhjhhhhhK\ubh)}(hhh](h)}(hfan_minimum_pwmh]hfan_minimum_pwm}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhhhhhKbubh)}(h_The amdgpu driver provides a sysfs API for checking and adjusting the minimum fan speed in PWM.h]h_The amdgpu driver provides a sysfs API for checking and adjusting the minimum fan speed in PWM.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMQhjOhhubh)}(hZReading back the file shows you the current setting and the permitted ranges if changable.h]hZReading back the file shows you the current setting and the permitted ranges if changable.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMThjOhhubh)}(h?Writing an integer to the file, change the setting accordingly.h]h?Writing an integer to the file, change the setting accordingly.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMWhjOhhubh)}(hZWhen you have finished the editing, write "c" (commit) to the file to commit your changes.h]h^When you have finished the editing, write “c” (commit) to the file to commit your changes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMYhjOhhubh)}(hVIf you want to reset to the default value, write "r" (reset) to the file to reset themh]hZIf you want to reset to the default value, write “r” (reset) to the file to reset them}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM\hjOhhubh)}(hX$This setting works under auto fan control mode only. It can co-exist with other settings which can work also under auto mode. It adjusts the PMFW's behavior about the minimum fan speed in PWM the fan should spin. Setting via this interface will switch the fan control to auto mode implicitly.h]hX&This setting works under auto fan control mode only. It can co-exist with other settings which can work also under auto mode. It adjusts the PMFW’s behavior about the minimum fan speed in PWM the fan should spin. Setting via this interface will switch the fan control to auto mode implicitly.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chM_hjOhhubeh}(h]fan-minimum-pwmah ]h"]fan_minimum_pwmah$]h&]uh1hhjhhhhhKbubh)}(hhh](h)}(hfan_zero_rpm_enableh]hfan_zero_rpm_enable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKhubh)}(hWThe amdgpu driver provides a sysfs API for checking and adjusting the zero RPM feature.h]hWThe amdgpu driver provides a sysfs API for checking and adjusting the zero RPM feature.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(hZReading back the file shows you the current setting and the permitted ranges if changable.h]hZReading back the file shows you the current setting and the permitted ranges if changable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(h?Writing an integer to the file, change the setting accordingly.h]h?Writing an integer to the file, change the setting accordingly.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(hZWhen you have finished the editing, write "c" (commit) to the file to commit your changes.h]h^When you have finished the editing, write “c” (commit) to the file to commit your changes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubh)}(hWIf you want to reset to the default value, write "r" (reset) to the file to reset them.h]h[If you want to reset to the default value, write “r” (reset) to the file to reset them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhjhhubeh}(h]fan-zero-rpm-enableah ]h"]fan_zero_rpm_enableah$]h&]uh1hhjhhhhhKhubh)}(hhh](h)}(hfan_zero_rpm_stop_temperatureh]hfan_zero_rpm_stop_temperature}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hhhhhKnubh)}(hhThe amdgpu driver provides a sysfs API for checking and adjusting the zero RPM stop temperature feature.h]hhThe amdgpu driver provides a sysfs API for checking and adjusting the zero RPM stop temperature feature.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj&hhubh)}(hZReading back the file shows you the current setting and the permitted ranges if changable.h]hZReading back the file shows you the current setting and the permitted ranges if changable.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj&hhubh)}(h?Writing an integer to the file, change the setting accordingly.h]h?Writing an integer to the file, change the setting accordingly.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj&hhubh)}(hZWhen you have finished the editing, write "c" (commit) to the file to commit your changes.h]h^When you have finished the editing, write “c” (commit) to the file to commit your changes.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj&hhubh)}(hWIf you want to reset to the default value, write "r" (reset) to the file to reset them.h]h[If you want to reset to the default value, write “r” (reset) to the file to reset them.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj&hhubh)}(htThis setting works only if the Zero RPM setting is enabled. It adjusts the temperature below which the fan can stop.h]htThis setting works only if the Zero RPM setting is enabled. It adjusts the temperature below which the fan can stop.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.chMhj&hhubeh}(h]fan-zero-rpm-stop-temperatureah ]h"]fan_zero_rpm_stop_temperatureah$]h&]uh1hhjhhhhhKnubeh}(h] gpu-sysfs-power-state-interfacesah ]h"] gpu sysfs power state interfacesah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hGFXOFFh]hGFXOFF}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKtubh)}(hGFXOFF is a feature found in most recent GPUs that saves power at runtime. The card's RLC (RunList Controller) firmware powers off the gfx engine dynamically when there is no workload on gfx or compute pipes. GFXOFF is on by default on supported GPUs.h]hGFXOFF is a feature found in most recent GPUs that saves power at runtime. The card’s RLC (RunList Controller) firmware powers off the gfx engine dynamically when there is no workload on gfx or compute pipes. GFXOFF is on by default on supported GPUs.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhjhhubh)}(hrUserspace can interact with GFXOFF through a debugfs interface (all values in `uint32_t`, unless otherwise noted):h](hNUserspace can interact with GFXOFF through a debugfs interface (all values in }(hjhhhNhNubhtitle_reference)}(h `uint32_t`h]huint32_t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, unless otherwise noted):}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK{hjhhubh)}(hhh](h)}(h``amdgpu_gfxoff``h]hliteral)}(hjh]h amdgpu_gfxoff}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hPUse it to enable/disable GFXOFF, and to check if it's current enabled/disabled::h]hQUse it to enable/disable GFXOFF, and to check if it’s current enabled/disabled:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj )}(h5$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff 01h]h5$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff 01}hj sbah}(h]h ]h"]h$]h&]j j uh1j hhhKhjhhubh)}(hhh](h)}(h*Write 0 to disable it, and 1 to enable it.h]h)}(hjh]h*Write 0 to disable it, and 1 to enable it.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h,Read 0 means it's disabled, 1 it's enabled. h]h)}(h+Read 0 means it's disabled, 1 it's enabled.h]h/Read 0 means it’s disabled, 1 it’s enabled.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4ubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1hhhhKhjhhubh)}(hIf it's enabled, that means that the GPU is free to enter into GFXOFF mode as needed. Disabled means that it will never enter GFXOFF mode.h]hIf it’s enabled, that means that the GPU is free to enter into GFXOFF mode as needed. Disabled means that it will never enter GFXOFF mode.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h] amdgpu-gfxoffah ]h"] amdgpu_gfxoffah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h``amdgpu_gfxoff_status``h]j)}(hjmh]hamdgpu_gfxoff_status}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhjhhhhhhKubh)}(h3Read it to check current GFXOFF's status of a GPU::h]h4Read it to check current GFXOFF’s status of a GPU:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhhubj )}(h<$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff_status 02h]h<$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff_status 02}hjsbah}(h]h ]h"]h$]h&]j j uh1j hhhKhjhhhubh)}(hhh](h)}(h:0: GPU is in GFXOFF state, the gfx engine is powered down.h]h)}(hjh]h:0: GPU is in GFXOFF state, the gfx engine is powered down.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h!1: Transition out of GFXOFF stateh]h)}(hjh]h!1: Transition out of GFXOFF state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h2: Not in GFXOFF stateh]h)}(hjh]h2: Not in GFXOFF state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h 3: Transition into GFXOFF state h]h)}(h3: Transition into GFXOFF stateh]h3: Transition into GFXOFF state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1hhhhKhjhhhubh)}(hIf GFXOFF is enabled, the value will be transitioning around [0, 3], always getting into 0 when possible. When it's disabled, it's always at 2. Returns ``-EINVAL`` if it's not supported.h](hIf GFXOFF is enabled, the value will be transitioning around [0, 3], always getting into 0 when possible. When it’s disabled, it’s always at 2. Returns }(hjhhhNhNubj)}(h ``-EINVAL``h]h-EINVAL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh if it’s not supported.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhhubeh}(h]amdgpu-gfxoff-statusah ]h"]amdgpu_gfxoff_statusah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h``amdgpu_gfxoff_count``h]j)}(hj1h]hamdgpu_gfxoff_count}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhj,hhhhhKubh)}(hRead it to get the total GFXOFF entry count at the time of query since system power-up. The value is an `uint64_t` type, however, due to firmware limitations, it can currently overflow as an `uint32_t`. *Only supported in vangogh*h](hhRead it to get the total GFXOFF entry count at the time of query since system power-up. The value is an }(hjFhhhNhNubj)}(h `uint64_t`h]huint64_t}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubhM type, however, due to firmware limitations, it can currently overflow as an }(hjFhhhNhNubj)}(h `uint32_t`h]huint32_t}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh. }(hjFhhhNhNubhemphasis)}(h*Only supported in vangogh*h]hOnly supported in vangogh}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjFubeh}(h]h ]h"]h$]h&]uh1hhhhKhj,hhubeh}(h]amdgpu-gfxoff-countah ]h"]amdgpu_gfxoff_countah$]h&]uh1hhjhhhhhKubh)}(hhh](h)}(h``amdgpu_gfxoff_residency``h]j)}(hjh]hamdgpu_gfxoff_residency}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hX$Write 1 to amdgpu_gfxoff_residency to start logging, and 0 to stop. Read it to get average GFXOFF residency % multiplied by 100 during the last logging interval. E.g. a value of 7854 means 78.54% of the time in the last logging interval the GPU was in GFXOFF mode. *Only supported in vangogh*h](hX Write 1 to amdgpu_gfxoff_residency to start logging, and 0 to stop. Read it to get average GFXOFF residency % multiplied by 100 during the last logging interval. E.g. a value of 7854 means 78.54% of the time in the last logging interval the GPU was in GFXOFF mode. }(hjhhhNhNubjs)}(h*Only supported in vangogh*h]hOnly supported in vangogh}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jrhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]amdgpu-gfxoff-residencyah ]h"]amdgpu_gfxoff_residencyah$]h&]uh1hhjhhhhhKubeh}(h]gfxoffah ]h"]gfxoffah$]h&]uh1hhhhhhhhKtubeh}(h])gpu-power-thermal-controls-and-monitoringah ]h"])gpu power/thermal controls and monitoringah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjjjjjjj(j%jPjMjK jH j j j+ j( j j jI jF j j} j j jfjcjjjLjIjjj#j jjjjjejbj)j&jjjju nametypes}(jjjjj(jPjK j j+ j jI j j jfjjLjj#jjjej)jjuh}(jhjhjjjjj%jjMj+jH jSj jN j( j j j. jF j j} jL j j jcj jjijIjjjOj jjj&jjjbjj&jhjj,jju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.