€•9Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ&/translations/zh_CN/gpu/amdgpu/thermal”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/zh_TW/gpu/amdgpu/thermal”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/it_IT/gpu/amdgpu/thermal”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ja_JP/gpu/amdgpu/thermal”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ko_KR/gpu/amdgpu/thermal”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/pt_BR/gpu/amdgpu/thermal”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/sp_SP/gpu/amdgpu/thermal”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ)GPU Power/Thermal Controls and Monitoring”h]”hŒ)GPU Power/Thermal Controls and Monitoring”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ@/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒHWMON Interfaces”h]”hŒHWMON Interfaces”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hŒ:The amdgpu driver exposes the following sensor interfaces:”h]”hŒ:The amdgpu driver exposes the following sensor interfaces:”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÜ hhËh²hubhŒ 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)”…”�”}”(hhøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÞ hhôubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïubhó)�”}”(hŒ GPU voltage ”h]”hÝ)�”}”(hŒ GPU voltage”h]”hŒ GPU voltage”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mà hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïubhó)�”}”(hŒ Northbridge voltage (APUs only) ”h]”hÝ)�”}”(hŒNorthbridge voltage (APUs only)”h]”hŒNorthbridge voltage (APUs only)”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mâ hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïubhó)�”}”(hŒ GPU power ”h]”hÝ)�”}”(hŒ GPU power”h]”hŒ GPU power”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mä hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïubhó)�”}”(hŒGPU fan ”h]”hÝ)�”}”(hŒGPU fan”h]”hŒGPU fan”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mæ hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïubhó)�”}”(hŒGPU gfx/compute engine clock ”h]”hÝ)�”}”(hŒGPU gfx/compute engine clock”h]”hŒGPU gfx/compute engine clock”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mè hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïubhó)�”}”(hŒGPU memory clock (dGPU only) ”h]”hÝ)�”}”(hŒGPU memory clock (dGPU only)”h]”hŒGPU memory clock (dGPU only)”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mê hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhhïubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1híh³jh´MÞ hhËh²hubhÝ)�”}”(hŒ%hwmon interfaces for GPU temperature:”h]”hŒ%hwmon interfaces for GPU temperature:”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mì hhËh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ„temp[1-3]_input: the on die GPU temperature in millidegrees Celsius - temp2_input and temp3_input are supported on SOC15 dGPUs only ”h]”hÝ)�”}”(hŒƒtemp[1-3]_input: the on die GPU temperature in millidegrees Celsius - temp2_input and temp3_input are supported on SOC15 dGPUs only”h]”hŒƒtemp[1-3]_input: the on die GPU temperature in millidegrees Celsius - temp2_input and temp3_input are supported on SOC15 dGPUs only”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mî hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjºubhó)�”}”(hŒktemp[1-3]_label: temperature channel label - temp2_label and temp3_label are supported on SOC15 dGPUs only ”h]”hÝ)�”}”(hŒjtemp[1-3]_label: temperature channel label - temp2_label and temp3_label are supported on SOC15 dGPUs only”h]”hŒjtemp[1-3]_label: temperature channel label - temp2_label and temp3_label are supported on SOC15 dGPUs only”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mñ hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjºubhó)�”}”(hŒ…temp[1-3]_crit: temperature critical max value in millidegrees Celsius - temp2_crit and temp3_crit are supported on SOC15 dGPUs only ”h]”hÝ)�”}”(hŒ„temp[1-3]_crit: temperature critical max value in millidegrees Celsius - temp2_crit and temp3_crit are supported on SOC15 dGPUs only”h]”hŒ„temp[1-3]_crit: temperature critical max value in millidegrees Celsius - temp2_crit and temp3_crit are supported on SOC15 dGPUs only”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mô hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjºubhó)�”}”(hŒŸtemp[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Ý)�”}”(hŒžtemp[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Œžtemp[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”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M÷ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjºubhó)�”}”(hŒ†temp[1-3]_emergency: temperature emergency max value(asic shutdown) in millidegrees Celsius - these are supported on SOC15 dGPUs only ”h]”hÝ)�”}”(hŒ…temp[1-3]_emergency: temperature emergency max value(asic shutdown) in millidegrees Celsius - these are supported on SOC15 dGPUs only”h]”hŒ…temp[1-3]_emergency: temperature emergency max value(asic shutdown) in millidegrees Celsius - these are supported on SOC15 dGPUs only”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mú hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjºubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³jÏh´Mî hhËh²hubhÝ)�”}”(hŒ!hwmon interfaces for GPU voltage:”h]”hŒ!hwmon interfaces for GPU voltage:”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mý hhËh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ0in0_input: the voltage on the GPU in millivolts ”h]”hÝ)�”}”(hŒ/in0_input: the voltage on the GPU in millivolts”h]”hŒ/in0_input: the voltage on the GPU in millivolts”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mÿ hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjOubhó)�”}”(hŒ8in1_input: the voltage on the Northbridge in millivolts ”h]”hÝ)�”}”(hŒ7in1_input: the voltage on the Northbridge in millivolts”h]”hŒ7in1_input: the voltage on the Northbridge in millivolts”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjOubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³jdh´Mÿ hhËh²hubhÝ)�”}”(hŒhwmon interfaces for GPU power:”h]”hŒhwmon interfaces for GPU power:”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MhhËh²hubhî)�”}”(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.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj™ubhó)�”}”(hŒapower1_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.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj™ubhó)�”}”(hŒ4power1_cap_min: minimum cap supported in microWatts ”h]”hÝ)�”}”(hŒ3power1_cap_min: minimum cap supported in microWatts”h]”hŒ3power1_cap_min: minimum cap supported in microWatts”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj™ubhó)�”}”(hŒ4power1_cap_max: maximum cap supported in microWatts ”h]”hÝ)�”}”(hŒ3power1_cap_max: maximum cap supported in microWatts”h]”hŒ3power1_cap_max: maximum cap supported in microWatts”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj™ubhó)�”}”(hŒ-power1_cap: selected power cap in microWatts ”h]”hÝ)�”}”(hŒ,power1_cap: selected power cap in microWatts”h]”hŒ,power1_cap: selected power cap in microWatts”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj™ubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³j®h´MhhËh²hubhÝ)�”}”(hŒhwmon interfaces for GPU fan:”h]”hŒhwmon interfaces for GPU fan:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MhhËh²hubhî)�”}”(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)”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubhó)�”}”(hŒ¢pwm1_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Ý)�”}”(hŒ¡pwm1_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Œ¡pwm1_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)”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubhó)�”}”(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)”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubhó)�”}”(hŒApwm1_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)”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubhó)�”}”(hŒ5fan1_min: a minimum value Unit: revolution/min (RPM) ”h]”hÝ)�”}”(hŒ4fan1_min: a minimum value Unit: revolution/min (RPM)”h]”hŒ4fan1_min: a minimum value Unit: revolution/min (RPM)”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubhó)�”}”(hŒ5fan1_max: a maximum value Unit: revolution/max (RPM) ”h]”hÝ)�”}”(hŒ4fan1_max: a maximum value Unit: revolution/max (RPM)”h]”hŒ4fan1_max: a maximum value Unit: revolution/max (RPM)”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubhó)�”}”(hŒfan1_input: fan speed in RPM ”h]”hÝ)�”}”(hŒfan1_input: fan speed in RPM”h]”hŒfan1_input: fan speed in RPM”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubhó)�”}”(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)”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubhó)�”}”(hŒEfan[1-\*]_enable: Enable or disable the sensors.1: Enable 0: Disable ”h]”hÝ)�”}”(hŒDfan[1-\*]_enable: Enable or disable the sensors.1: Enable 0: Disable”h]”hŒDfan[1-*]_enable: Enable or disable the sensors.1: Enable 0: Disable”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M!hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj.ubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³jCh´MhhËh²hubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ‡NOTE: 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]”(hŒterm”“”)�”}”(hŒ]NOTE: DO NOT set the fan speed via "pwm1" and "fan[1-\*]_target" interfaces at the same time.”h]”hŒeNOTE: DO NOT set the fan speed via “pwm1â€� and “fan[1-*]_targetâ€� interfaces at the same time.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M$hjubhŒ definition”“”)�”}”(hhh]”hÝ)�”}”(hŒ(That will get the former one overridden.”h]”hŒ(That will get the former one overridden.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j3h´M$hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j4hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j3h´M$hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhËh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´NubhÝ)�”}”(hŒ hwmon interfaces for GPU clocks:”h]”hŒ hwmon interfaces for GPU clocks:”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M&hhËh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ,freq1_input: the gfx/compute clock in hertz ”h]”hÝ)�”}”(hŒ+freq1_input: the gfx/compute clock in hertz”h]”hŒ+freq1_input: the gfx/compute clock in hertz”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M(hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjiubhó)�”}”(hŒ'freq2_input: the memory clock in hertz ”h]”hÝ)�”}”(hŒ&freq2_input: the memory clock in hertz”h]”hŒ&freq2_input: the memory clock in hertz”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M*hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjiubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³j~h´M(hhËh²hubhÝ)�”}”(hŒMYou can use hwmon tools like sensors to view this information on your system.”h]”hŒMYou can use hwmon tools like sensors to view this information on your system.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:8: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M,hhËh²hubeh}”(h]”Œhwmon-interfaces”ah ]”h"]”Œhwmon interfaces”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ GPU sysfs Power State Interfaces”h]”hŒ GPU sysfs Power State Interfaces”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj»h²hh³hÊh´K ubhÝ)�”}”(hŒ/GPU power controls are exposed via sysfs files.”h]”hŒ/GPU power controls are exposed via sysfs files.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khj»h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒpower_dpm_state”h]”hŒpower_dpm_state”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÚh²hh³hÊh´KubhÝ)�”}”(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:”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KÖhjÚh²hubhî)�”}”(hhh]”(hó)�”}”(hŒbattery ”h]”hÝ)�”}”(hŒbattery”h]”hŒbattery”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KÛhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjúubhó)�”}”(hŒ balanced ”h]”hÝ)�”}”(hŒbalanced”h]”hŒbalanced”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KÝhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjúubhó)�”}”(hŒ performance ”h]”hÝ)�”}”(hŒ performance”h]”hŒ performance”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Kßhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjúubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³jh´KÛhjÚh²hubhÝ)�”}”(hŒbattery”h]”hŒbattery”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KáhjÚh²hubhÝ)�”}”(hŒÌOn 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]”hŒÌOn 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.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KãhjÚh²hubhÝ)�”}”(hŒbalanced”h]”hŒbalanced”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KçhjÚh²hubhÝ)�”}”(hŒÎOn 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]”hŒÎOn 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.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KéhjÚh²hubhÝ)�”}”(hŒ performance”h]”hŒ performance”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KíhjÚh²hubhÝ)�”}”(hŒÔOn 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]”hŒÔOn 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.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:19: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´KïhjÚh²hubeh}”(h]”Œpower-dpm-state”ah ]”h"]”Œpower_dpm_state”ah$]”h&]”uh1hµhj»h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ!power_dpm_force_performance_level”h]”hŒ!power_dpm_force_performance_level”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj°h²hh³hÊh´KubhÝ)�”}”(hŒ¹The 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]”hŒ¹The 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:”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M1hj°h²hubhî)�”}”(hhh]”(hó)�”}”(hŒauto ”h]”hÝ)�”}”(hŒauto”h]”hŒauto”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M5hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjÐubhó)�”}”(hŒlow ”h]”hÝ)�”}”(hŒlow”h]”hŒlow”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M7hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjÐubhó)�”}”(hŒhigh ”h]”hÝ)�”}”(hŒhigh”h]”hŒhigh”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M9hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjÐubhó)�”}”(hŒmanual ”h]”hÝ)�”}”(hŒmanual”h]”hŒmanual”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M;hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjÐubhó)�”}”(hŒprofile_standard ”h]”hÝ)�”}”(hŒprofile_standard”h]”hŒprofile_standard”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M=hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjÐubhó)�”}”(hŒprofile_min_sclk ”h]”hÝ)�”}”(hŒprofile_min_sclk”h]”hŒprofile_min_sclk”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M?hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjÐubhó)�”}”(hŒprofile_min_mclk ”h]”hÝ)�”}”(hŒprofile_min_mclk”h]”hŒprofile_min_mclk”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MAhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjÐubhó)�”}”(hŒ profile_peak ”h]”hÝ)�”}”(hŒ profile_peak”h]”hŒ profile_peak”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MChj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjÐubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³jåh´M5hj°h²hubhÝ)�”}”(hŒauto”h]”hŒauto”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MEhj°h²hubhÝ)�”}”(hŒ„When auto is selected, the driver will attempt to dynamically select the optimal power profile for current conditions in the driver.”h]”hŒ„When auto is selected, the driver will attempt to dynamically select the optimal power profile for current conditions in the driver.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MGhj°h²hubhÝ)�”}”(hŒlow”h]”hŒlow”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MJhj°h²hubhÝ)�”}”(hŒFWhen low is selected, the clocks are forced to the lowest power state.”h]”hŒFWhen low is selected, the clocks are forced to the lowest power state.”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MLhj°h²hubhÝ)�”}”(hŒhigh”h]”hŒhigh”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MNhj°h²hubhÝ)�”}”(hŒHWhen high is selected, the clocks are forced to the highest power state.”h]”hŒHWhen high is selected, the clocks are forced to the highest power state.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MPhj°h²hubhÝ)�”}”(hŒmanual”h]”hŒmanual”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MRhj°h²hubhÝ)�”}”(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.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MThj°h²hubhÝ)�”}”(hŒ?profile_standard profile_min_sclk profile_min_mclk profile_peak”h]”hŒ?profile_standard profile_min_sclk profile_min_mclk profile_peak”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MYhj°h²hubhÝ)�”}”(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.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:25: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M^hj°h²hubeh}”(h]”Œ!power-dpm-force-performance-level”ah ]”h"]”Œ!power_dpm_force_performance_level”ah$]”h&]”uh1hµhj»h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒpp_table”h]”hŒpp_table”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj?h²hh³hÊh´KubhÝ)�”}”(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.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:31: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MEhj?h²hubeh}”(h]”Œpp-table”ah ]”h"]”Œpp_table”ah$]”h&]”uh1hµhj»h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒpp_od_clk_voltage”h]”hŒpp_od_clk_voltage”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjgh²hh³hÊh´K#ubhÝ)�”}”(hŒŸThe 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]”hŒŸThe 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.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M}hjgh²hubhÝ)�”}”(hŒ—Note 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]”hŒ—Note that the actual memory controller clock rate are exposed, not the effective memory clock of the DRAMs. To translate it, use the following formula:”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M�hjgh²hubhÝ)�”}”(hŒClock conversion (Mhz):”h]”hŒClock conversion (Mhz):”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M…hjgh²hubhÝ)�”}”(hŒ9HBM: effective_memory_clock = memory_controller_clock * 1”h]”hŒ9HBM: effective_memory_clock = memory_controller_clock * 1”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M‡hjgh²hubhÝ)�”}”(hŒ8G5: effective_memory_clock = memory_controller_clock * 1”h]”hŒ8G5: effective_memory_clock = memory_controller_clock * 1”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M‰hjgh²hubhÝ)�”}”(hŒ8G6: effective_memory_clock = memory_controller_clock * 2”h]”hŒ8G6: effective_memory_clock = memory_controller_clock * 2”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M‹hjgh²hubhÝ)�”}”(hŒDRAM data rate (MT/s):”h]”hŒDRAM data rate (MT/s):”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M�hjgh²hubhÝ)�”}”(hŒ+HBM: effective_memory_clock * 2 = data_rate”h]”hŒ+HBM: effective_memory_clock * 2 = data_rate”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M�hjgh²hubhÝ)�”}”(hŒ*G5: effective_memory_clock * 4 = data_rate”h]”hŒ*G5: effective_memory_clock * 4 = data_rate”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M‘hjgh²hubhÝ)�”}”(hŒ*G6: effective_memory_clock * 8 = data_rate”h]”hŒ*G6: effective_memory_clock * 8 = data_rate”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M“hjgh²hubhÝ)�”}”(hŒBandwidth (MB/s):”h]”hŒBandwidth (MB/s):”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M•hjgh²hubhÝ)�”}”(hŒ1data_rate * vram_bit_width / 8 = memory_bandwidth”h]”hŒ1data_rate * vram_bit_width / 8 = memory_bandwidth”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M—hjgh²hubhÝ)�”}”(hŒSome examples:”h]”hŒSome examples:”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M™hjgh²hubhÝ)�”}”(hŒ G5 on RX460:”h]”hŒ G5 on RX460:”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M›hjgh²hubhÝ)�”}”(hŒ"memory_controller_clock = 1750 Mhz”h]”hŒ"memory_controller_clock = 1750 Mhz”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M�hjgh²hubhÝ)�”}”(hŒ0effective_memory_clock = 1750 Mhz * 1 = 1750 Mhz”h]”hŒ0effective_memory_clock = 1750 Mhz * 1 = 1750 Mhz”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MŸhjgh²hubhÝ)�”}”(hŒ data rate = 1750 * 4 = 7000 MT/s”h]”hŒ data rate = 1750 * 4 = 7000 MT/s”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M¡hjgh²hubhÝ)�”}”(hŒ4memory_bandwidth = 7000 * 128 bits / 8 = 112000 MB/s”h]”hŒ4memory_bandwidth = 7000 * 128 bits / 8 = 112000 MB/s”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M£hjgh²hubhÝ)�”}”(hŒ G6 on RX5700:”h]”hŒ G6 on RX5700:”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M¥hjgh²hubhÝ)�”}”(hŒ!memory_controller_clock = 875 Mhz”h]”hŒ!memory_controller_clock = 875 Mhz”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M§hjgh²hubhÝ)�”}”(hŒ/effective_memory_clock = 875 Mhz * 2 = 1750 Mhz”h]”hŒ/effective_memory_clock = 875 Mhz * 2 = 1750 Mhz”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M©hjgh²hubhÝ)�”}”(hŒ!data rate = 1750 * 8 = 14000 MT/s”h]”hŒ!data rate = 1750 * 8 = 14000 MT/s”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M«hjgh²hubhÝ)�”}”(hŒ5memory_bandwidth = 14000 * 256 bits / 8 = 448000 MB/s”h]”hŒ5memory_bandwidth = 14000 * 256 bits / 8 = 448000 MB/s”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M­hjgh²hubhÝ)�”}”(hŒ!< For Vega10 and previous ASICs >”h]”hŒ!< For Vega10 and previous ASICs >”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M¯hjgh²hubhÝ)�”}”(hŒReading the file will display:”h]”hŒReading the file will display:”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M±hjgh²hubhî)�”}”(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_SCLK”h]”hŒ:a list of engine clock levels and voltages labeled OD_SCLK”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M³hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjïubhó)�”}”(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_MCLK”h]”hŒ:a list of memory clock levels and voltages labeled OD_MCLK”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mµhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjïubhó)�”}”(hŒDa list of valid ranges for sclk, mclk, and voltage labeled OD_RANGE ”h]”hÝ)�”}”(hŒCa list of valid ranges for sclk, mclk, and voltage labeled OD_RANGE”h]”hŒCa list of valid ranges for sclk, mclk, and voltage labeled OD_RANGE”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M·hj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjïubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³j h´M³hjgh²hubhÝ)�”}”(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.”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M¹hjgh²hubhÝ)�”}”(hŒ< For Vega20 and newer ASICs >”h]”hŒ< For Vega20 and newer ASICs >”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÃhjgh²hubhÝ)�”}”(hŒReading the file will display:”h]”hŒReading the file will display:”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÅhjgh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ1minimum and maximum engine clock labeled OD_SCLK ”h]”hÝ)�”}”(hŒ0minimum and maximum engine clock labeled OD_SCLK”h]”hŒ0minimum and maximum engine clock labeled OD_SCLK”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÇhjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjp ubhó)�”}”(hŒVminimum(not available for Vega20 and Navi1x) and maximum memory clock labeled OD_MCLK ”h]”hÝ)�”}”(hŒUminimum(not available for Vega20 and Navi1x) and maximum memory clock labeled OD_MCLK”h]”hŒUminimum(not available for Vega20 and Navi1x) and maximum memory clock labeled OD_MCLK”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÉhjŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjp ubhó)�”}”(hŒ9minimum and maximum fabric clock labeled OD_FCLK (SMU13) ”h]”hÝ)�”}”(hŒ8minimum and maximum fabric clock labeled OD_FCLK (SMU13)”h]”hŒ8minimum and maximum fabric clock labeled OD_FCLK (SMU13)”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÌhj¥ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjp ubhó)�”}”(hŒ–three points labeled OD_VDDC_CURVE. They can be used to calibrate the sclk voltage curve. This is available for Vega20 and NV1X. ”h]”hÝ)�”}”(hŒ•three points labeled OD_VDDC_CURVE. They can be used to calibrate the sclk voltage curve. This is available for Vega20 and NV1X.”h]”hŒ•three points labeled OD_VDDC_CURVE. They can be used to calibrate the sclk voltage curve. This is available for Vega20 and NV1X.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÎhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjp 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Û h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÒhj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjp 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_RANGE”h]”hŒ^a list of valid ranges for sclk, mclk, voltage curve points or voltage offset labeled OD_RANGE”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MØhjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjp ubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³j… h´MÇhjgh²hubhÝ)�”}”(hŒ < For APUs >”h]”hŒ < For APUs >”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÛhjgh²hubhÝ)�”}”(hŒReading the file will display:”h]”hŒReading the file will display:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÝhjgh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ1minimum and maximum engine clock labeled OD_SCLK ”h]”hÝ)�”}”(hŒ0minimum and maximum engine clock labeled OD_SCLK”h]”hŒ0minimum and maximum engine clock labeled OD_SCLK”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mßhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj- ubhó)�”}”(hŒ1a list of valid ranges for sclk labeled OD_RANGE ”h]”hÝ)�”}”(hŒ0a list of valid ranges for sclk labeled OD_RANGE”h]”hŒ0a list of valid ranges for sclk labeled OD_RANGE”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MáhjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj- ubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³jB h´Mßhjgh²hubhÝ)�”}”(hŒ< For VanGogh >”h]”hŒ< For VanGogh >”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mãhjgh²hubhÝ)�”}”(hŒReading the file will display:”h]”hŒReading the file will display:”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Måhjgh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ0minimum and maximum engine clock labeled OD_SCLK”h]”hÝ)�”}”(hj‹ h]”hŒ0minimum and maximum engine clock labeled OD_SCLK”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mçhj‰ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj† ubhó)�”}”(hŒ0minimum and maximum core clocks labeled OD_CCLK ”h]”hÝ)�”}”(hŒ/minimum and maximum core clocks labeled OD_CCLK”h]”hŒ/minimum and maximum core clocks labeled OD_CCLK”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mèhj¡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj† ubhó)�”}”(hŒ:a list of valid ranges for sclk and cclk labeled OD_RANGE ”h]”hÝ)�”}”(hŒ9a list of valid ranges for sclk and cclk labeled OD_RANGE”h]”hŒ9a list of valid ranges for sclk and cclk labeled OD_RANGE”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mêhjº ubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhj† ubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³jš h´Mçhjgh²hubhÝ)�”}”(hŒ"To manually adjust these settings:”h]”hŒ"To manually adjust these settings:”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:37: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mìhjgh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ pp_dpm_sclk/mclk/pcie" E.g.,”h]”hŒÞTo 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Ì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:43: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mãhj{ h²hubjº )�”}”(hŒecho "4 5 6" > pp_dpm_sclk”h]”hŒecho "4 5 6" > pp_dpm_sclk”…”�”}”hjÛ sbah}”(h]”h ]”h"]”h$]”h&]”jÉ jÊ Œforce”‰Œlanguage”Œbash”Œhighlight_args”}”uh1j¹ h³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:43: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Méhj{ h²hubhÝ)�”}”(hŒ$will enable sclk levels 4, 5, and 6.”h]”hŒ$will enable sclk levels 4, 5, and 6.”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:43: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Míhj{ h²hubhÝ)�”}”(hŒ>NOTE: change to the dcefclk max dpm level is not supported now”h]”hŒ>NOTE: change to the dcefclk max dpm level is not supported now”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:43: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mïhj{ h²hubeh}”(h]”Œpp-dpm”ah ]”h"]”Œpp_dpm_*”ah$]”h&]”uh1hµhj»h²hh³hÊh´K)ubh¶)�”}”(hhh]”(h»)�”}”(hŒpp_power_profile_mode”h]”hŒpp_power_profile_mode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´K/ubhÝ)�”}”(hŒ±The 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]”hŒ±The 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& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:49: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MFhj h²hubhÝ)�”}”(hŒReading this file outputs a list of all of the predefined power profiles and the relevant heuristics settings for that profile.”h]”hŒReading this file outputs a list of all of the predefined power profiles and the relevant heuristics settings for that profile.”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:49: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MJhj h²hubhÝ)�”}”(hXþTo 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]”hXþTo 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.”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:49: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MMhj h²hubeh}”(h]”Œpp-power-profile-mode”ah ]”h"]”Œpp_power_profile_mode”ah$]”h&]”uh1hµhj»h²hh³hÊh´K/ubh¶)�”}”(hhh]”(h»)�”}”(hŒ pm_policy”h]”hŒ pm_policy”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj[ h²hh³hÊh´K5ubhÝ)�”}”(hŒ÷Certain 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]”hŒ÷Certain 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.”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mu hj[ h²hubhÝ)�”}”(hŒŒThe amdgpu driver provides a sysfs API for selecting the policy. Presently, only two types of policies are supported through this interface.”h]”hŒŒThe amdgpu driver provides a sysfs API for selecting the policy. Presently, only two types of policies are supported through this interface.”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mz hj[ h²hubhŒ 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Ý)�”}”(hŒqPstate Policy Selection - This is to select different Pstate profiles which decides clock/throttling preferences.”h]”hŒqPstate Policy Selection - This is to select different Pstate profiles which decides clock/throttling preferences.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M} hjŒ ubhÝ)�”}”(hŒŽXGMI PLPD Policy Selection - When multiple devices are connected over XGMI, this helps to select policy to be applied for per link power down.”•f•h]”hŒŽXGMI PLPD Policy Selection - When multiple devices are connected over XGMI, this helps to select policy to be applied for per link power down.”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M€ hjŒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŠ h³jž h´M} hj[ h²hubhÝ)�”}”(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´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mƒ hj[ h²hubj‹ )�”}”(hŒ5cat /sys/bus/pci/devices/.../pm_policy/ ”h]”hÝ)�”}”(hŒ4cat /sys/bus/pci/devices/.../pm_policy/”h]”hŒ4cat /sys/bus/pci/devices/.../pm_policy/”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mˆ hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠ h³jÕ h´Mˆ hj[ h²hubhÝ)�”}”(hŒ„Reading the policy file shows the different levels supported. The level which is applied presently is denoted by * (asterisk). E.g.,”h]”hŒ„Reading the policy file shows the different levels supported. The level which is applied presently is denoted by * (asterisk). E.g.,”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MŠ hj[ h²hubjº )�”}”(hŒåcat /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]”hŒåcat /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ê Œconsole”jì }”uh1j¹ h³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M� hj[ h²hubhÝ)�”}”(hŒTo apply a specific policy”h]”hŒTo apply a specific policy”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mš hj[ h²hubhÝ)�”}”(hŒB"echo > /sys/bus/pci/devices/.../pm_policy/"”h]”hŒF“echo > /sys/bus/pci/devices/.../pm_policy/â€�”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mœ hj[ h²hubhÝ)�”}”(hŒzFor the levels listed in the example above, to select "plpd_optimized" for XGMI and "soc_pstate_2" for soc pstate policy -”h]”hŒ‚For the levels listed in the example above, to select “plpd_optimizedâ€� for XGMI and “soc_pstate_2â€� for soc pstate policy -”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mž hj[ h²hubjº )�”}”(hŒpecho "2" > /sys/bus/pci/devices/.../pm_policy/xgmi_plpd echo "3" > /sys/bus/pci/devices/.../pm_policy/soc_pstate”h]”hŒpecho "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ê Œconsole”jì }”uh1j¹ h³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:55: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M¡ hj[ h²hubeh}”(h]”Œ pm-policy”ah ]”h"]”Œ pm_policy”ah$]”h&]”uh1hµhj»h²hh³hÊh´K5ubh¶)�”}”(hhh]”(h»)�”}”(hŒ\*_busy_percent”h]”hŒ*_busy_percent”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjB h²hh³hÊh´K;ubhÝ)�”}”(hŒêThe 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]”hŒêThe 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.”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:61: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M»hjB h²hubhÝ)�”}”(hŒëThe 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]”hŒëThe 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.”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:64: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÓhjB h²hubeh}”(h]”Œ busy-percent”ah ]”h"]”Œ*_busy_percent”ah$]”h&]”uh1hµhj»h²hh³hÊh´K;ubh¶)�”}”(hhh]”(h»)�”}”(hŒ gpu_metrics”h]”hŒ gpu_metrics”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjy h²hh³hÊh´KDubhÝ)�”}”(hŒ³The 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]”hŒ³The 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Š h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:70: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mæhjy h²hubhÝ)�”}”(hŒÜThese 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]”hŒÞThese 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.”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:70: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mêhjy h²hubeh}”(h]”Œ gpu-metrics”ah ]”h"]”Œ gpu_metrics”ah$]”h&]”uh1hµhj»h²hh³hÊh´KDubh¶)�”}”(hhh]”(h»)�”}”(hŒ fan_curve”h]”hŒ fan_curve”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj° h²hh³hÊh´KJubhÝ)�”}”(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Á h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÈhj° h²hubhÝ)�”}”(hŒÁReading 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]”hŒÁReading 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Ð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MËhj° h²hubhÝ)�”}”(hŒ¬Writing 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]”hŒ°Writing 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ß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÏhj° h²hubhÝ)�”}”(hŒZWhen 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î h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÓhj° h²hubhÝ)�”}”(hŒVIf you want to reset to the default value, write "r" (reset) to the file to reset them”h]”hŒZIf you want to reset to the default value, write “râ€� (reset) to the file to reset them”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÖhj° h²hubhÝ)�”}”(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 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:76: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÙhj° h²hubeh}”(h]”Œ fan-curve”ah ]”h"]”Œ fan_curve”ah$]”h&]”uh1hµhj»h²hh³hÊh´KJubh¶)�”}”(hhh]”(h»)�”}”(hŒacoustic_limit_rpm_threshold”h]”hŒacoustic_limit_rpm_threshold”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj#h²hh³hÊh´KPubhÝ)�”}”(hŒlThe amdgpu driver provides a sysfs API for checking and adjusting the acoustic limit in RPM for fan control.”h]”hŒlThe amdgpu driver provides a sysfs API for checking and adjusting the acoustic limit in RPM for fan control.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj#h²hubhÝ)�”}”(hŒZReading back the file shows you the current setting and the permitted ranges if changable.”h]”hŒZReading back the file shows you the current setting and the permitted ranges if changable.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M hj#h²hubhÝ)�”}”(hŒ?Writing an integer to the file, change the setting accordingly.”h]”hŒ?Writing an integer to the file, change the setting accordingly.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj#h²hubhÝ)�”}”(hŒZWhen 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.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj#h²hubhÝ)�”}”(hŒVIf you want to reset to the default value, write "r" (reset) to the file to reset them”h]”hŒZIf you want to reset to the default value, write “râ€� (reset) to the file to reset them”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj#h²hubhÝ)�”}”(hŒÔThis 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]”hŒÖThis 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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:82: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhj#h²hubeh}”(h]”Œacoustic-limit-rpm-threshold”ah ]”h"]”Œacoustic_limit_rpm_threshold”ah$]”h&]”uh1hµhj»h²hh³hÊh´KPubh¶)�”}”(hhh]”(h»)�”}”(hŒacoustic_target_rpm_threshold”h]”hŒacoustic_target_rpm_threshold”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj–h²hh³hÊh´KVubhÝ)�”}”(hŒmThe amdgpu driver provides a sysfs API for checking and adjusting the acoustic target in RPM for fan control.”h]”hŒmThe amdgpu driver provides a sysfs API for checking and adjusting the acoustic target in RPM for fan control.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MBhj–h²hubhÝ)�”}”(hŒZReading back the file shows you the current setting and the permitted ranges if changable.”h]”hŒZReading back the file shows you the current setting and the permitted ranges if changable.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MEhj–h²hubhÝ)�”}”(hŒ?Writing an integer to the file, change the setting accordingly.”h]”hŒ?Writing an integer to the file, change the setting accordingly.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MHhj–h²hubhÝ)�”}”(hŒZWhen 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Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MJhj–h²hubhÝ)�”}”(hŒVIf you want to reset to the default value, write "r" (reset) to the file to reset them”h]”hŒZIf you want to reset to the default value, write “râ€� (reset) to the file to reset them”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MMhj–h²hubhÝ)�”}”(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.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:88: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MPhj–h²hubeh}”(h]”Œacoustic-target-rpm-threshold”ah ]”h"]”Œacoustic_target_rpm_threshold”ah$]”h&]”uh1hµhj»h²hh³hÊh´KVubh¶)�”}”(hhh]”(h»)�”}”(hŒfan_target_temperature”h]”hŒfan_target_temperature”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´K\ubhÝ)�”}”(hŒzThe amdgpu driver provides a sysfs API for checking and adjusting the target tempeature in Celsius degree for fan control.”h]”hŒzThe amdgpu driver provides a sysfs API for checking and adjusting the target tempeature in Celsius degree for fan control.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M~hj h²hubhÝ)�”}”(hŒZReading back the file shows you the current setting and the permitted ranges if changable.”h]”hŒZReading back the file shows you the current setting and the permitted ranges if changable.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M�hj h²hubhÝ)�”}”(hŒ?Writing an integer to the file, change the setting accordingly.”h]”hŒ?Writing an integer to the file, change the setting accordingly.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M„hj h²hubhÝ)�”}”(hŒZWhen 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.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M†hj h²hubhÝ)�”}”(hŒVIf you want to reset to the default value, write "r" (reset) to the file to reset them”h]”hŒZIf you want to reset to the default value, write “râ€� (reset) to the file to reset them”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M‰hj h²hubhÝ)�”}”(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.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œe/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:94: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MŒhj h²hubeh}”(h]”Œfan-target-temperature”ah ]”h"]”Œfan_target_temperature”ah$]”h&]”uh1hµhj»h²hh³hÊh´K\ubh¶)�”}”(hhh]”(h»)�”}”(hŒfan_minimum_pwm”h]”hŒfan_minimum_pwm”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj|h²hh³hÊh´KbubhÝ)�”}”(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�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M»hj|h²hubhÝ)�”}”(hŒZReading back the file shows you the current setting and the permitted ranges if changable.”h]”hŒZReading back the file shows you the current setting and the permitted ranges if changable.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M¾hj|h²hubhÝ)�”}”(hŒ?Writing an integer to the file, change the setting accordingly.”h]”hŒ?Writing an integer to the file, change the setting accordingly.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÁhj|h²hubhÝ)�”}”(hŒZWhen 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ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÃhj|h²hubhÝ)�”}”(hŒVIf you want to reset to the default value, write "r" (reset) to the file to reset them”h]”hŒZIf you want to reset to the default value, write “râ€� (reset) to the file to reset them”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÆhj|h²hubhÝ)�”}”(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.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:100: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´MÉhj|h²hubeh}”(h]”Œfan-minimum-pwm”ah ]”h"]”Œfan_minimum_pwm”ah$]”h&]”uh1hµhj»h²hh³hÊh´Kbubh¶)�”}”(hhh]”(h»)�”}”(hŒfan_zero_rpm_enable”h]”hŒfan_zero_rpm_enable”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjïh²hh³hÊh´KhubhÝ)�”}”(hŒWThe amdgpu driver provides a sysfs API for checking and adjusting the zero RPM feature.”h]”hŒWThe amdgpu driver provides a sysfs API for checking and adjusting the zero RPM feature.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Möhjïh²hubhÝ)�”}”(hŒZReading back the file shows you the current setting and the permitted ranges if changable.”h]”hŒZReading back the file shows you the current setting and the permitted ranges if changable.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mùhjïh²hubhÝ)�”}”(hŒ?Writing an integer to the file, change the setting accordingly.”h]”hŒ?Writing an integer to the file, change the setting accordingly.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mühjïh²hubhÝ)�”}”(hŒZWhen 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-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mþhjïh²hubhÝ)�”}”(hŒWIf 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.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:106: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´Mhjïh²hubeh}”(h]”Œfan-zero-rpm-enable”ah ]”h"]”Œfan_zero_rpm_enable”ah$]”h&]”uh1hµhj»h²hh³hÊh´Khubh¶)�”}”(hhh]”(h»)�”}”(hŒfan_zero_rpm_stop_temperature”h]”hŒfan_zero_rpm_stop_temperature”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjSh²hh³hÊh´KnubhÝ)�”}”(hŒhThe amdgpu driver provides a sysfs API for checking and adjusting the zero RPM stop temperature feature.”h]”hŒhThe amdgpu driver provides a sysfs API for checking and adjusting the zero RPM stop temperature feature.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M,hjSh²hubhÝ)�”}”(hŒZReading back the file shows you the current setting and the permitted ranges if changable.”h]”hŒZReading back the file shows you the current setting and the permitted ranges if changable.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M/hjSh²hubhÝ)�”}”(hŒ?Writing an integer to the file, change the setting accordingly.”h]”hŒ?Writing an integer to the file, change the setting accordingly.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M2hjSh²hubhÝ)�”}”(hŒZWhen 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‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M4hjSh²hubhÝ)�”}”(hŒWIf 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.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M7hjSh²hubhÝ)�”}”(hŒtThis setting works only if the Zero RPM setting is enabled. It adjusts the temperature below which the fan can stop.”h]”hŒtThis setting works only if the Zero RPM setting is enabled. It adjusts the temperature below which the fan can stop.”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œf/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/thermal:112: ./drivers/gpu/drm/amd/pm/amdgpu_pm.c”h´M:hjSh²hubeh}”(h]”Œfan-zero-rpm-stop-temperature”ah ]”h"]”Œfan_zero_rpm_stop_temperature”ah$]”h&]”uh1hµhj»h²hh³hÊh´Knubeh}”(h]”Œ gpu-sysfs-power-state-interfaces”ah ]”h"]”Œ gpu sysfs power state interfaces”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒGFXOFF”h]”hŒGFXOFF”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÎh²hh³hÊh´KtubhÝ)�”}”(hŒûGFXOFF 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]”hŒýGFXOFF 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.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KvhjÎh²hubhÝ)�”}”(hŒrUserspace can interact with GFXOFF through a debugfs interface (all values in `uint32_t`, unless otherwise noted):”h]”(hŒNUserspace can interact with GFXOFF through a debugfs interface (all values in ”…”�”}”(hjíh²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ `uint32_t`”h]”hŒuint32_t”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jõhjíubhŒ, unless otherwise noted):”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K{hjÎh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ``amdgpu_gfxoff``”h]”hŒliteral”“”)�”}”(hjh]”hŒ amdgpu_gfxoff”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´KubhÝ)�”}”(hŒPUse it to enable/disable GFXOFF, and to check if it's current enabled/disabled::”h]”hŒQUse it to enable/disable GFXOFF, and to check if it’s current enabled/disabled:”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K�hjh²hubjº )�”}”(hŒ5$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff 01”h]”hŒ5$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff 01”…”�”}”hj9sbah}”(h]”h ]”h"]”h$]”h&]”jÉ jÊ uh1j¹ h³hÊh´Kƒhjh²hubhî)�”}”(hhh]”(hó)�”}”(hŒ*Write 0 to disable it, and 1 to enable it.”h]”hÝ)�”}”(hjLh]”hŒ*Write 0 to disable it, and 1 to enable it.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K†hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjGh²hh³hÊh´Nubhó)�”}”(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.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K‡hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjGh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³hÊh´K†hjh²hubhÝ)�”}”(hŒŠIf 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]”hŒŒIf 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.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K‰hjh²hubeh}”(h]”Œ amdgpu-gfxoff”ah ]”h"]”Œ amdgpu_gfxoff”ah$]”h&]”uh1hµhjÎh²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ``amdgpu_gfxoff_status``”h]”j)�”}”(hjšh]”hŒamdgpu_gfxoff_status”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj•h²hh³hÊh´K�ubhÝ)�”}”(hŒ3Read it to check current GFXOFF's status of a GPU::”h]”hŒ4Read it to check current GFXOFF’s status of a GPU:”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K�hj•h²hubjº )�”}”(hŒ<$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff_status 02”h]”hŒ<$ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff_status 02”…”�”}”hj½sbah}”(h]”h ]”h"]”h$]”h&]”jÉ jÊ uh1j¹ h³hÊh´K‘hj•h²hubhî)�”}”(hhh]”(hó)�”}”(hŒ:0: GPU is in GFXOFF state, the gfx engine is powered down.”h]”hÝ)�”}”(hjÐh]”hŒ:0: GPU is in GFXOFF state, the gfx engine is powered down.”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K”hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjËh²hh³hÊh´Nubhó)�”}”(hŒ!1: Transition out of GFXOFF state”h]”hÝ)�”}”(hjçh]”hŒ!1: Transition out of GFXOFF state”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K•hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjËh²hh³hÊh´Nubhó)�”}”(hŒ2: Not in GFXOFF state”h]”hÝ)�”}”(hjþh]”hŒ2: Not in GFXOFF state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K–hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjËh²hh³hÊh´Nubhó)�”}”(hŒ 3: Transition into GFXOFF state ”h]”hÝ)�”}”(hŒ3: Transition into GFXOFF state”h]”hŒ3: Transition into GFXOFF state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K—hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hòhjËh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j©jªuh1híh³hÊh´K”hj•h²hubhÝ)�”}”(hŒºIf 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]”(hŒœIf 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 ”…”�”}”(hj1h²hh³Nh´Nubj)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1ubhŒ if it’s not supported.”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K™hj•h²hubeh}”(h]”Œamdgpu-gfxoff-status”ah ]”h"]”Œamdgpu_gfxoff_status”ah$]”h&]”uh1hµhjÎh²hh³hÊh´K�ubh¶)�”}”(hhh]”(h»)�”}”(hŒ``amdgpu_gfxoff_count``”h]”j)�”}”(hj^h]”hŒamdgpu_gfxoff_count”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjYh²hh³hÊh´KžubhÝ)�”}”(hŒæRead 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]”(hŒhRead it to get the total GFXOFF entry count at the time of query since system power-up. The value is an ”…”�”}”(hjsh²hh³Nh´Nubjö)�”}”(hŒ `uint64_t`”h]”hŒuint64_t”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jõhjsubhŒM type, however, due to firmware limitations, it can currently overflow as an ”…”�”}”(hjsh²hh³Nh´Nubjö)�”}”(hŒ `uint32_t`”h]”hŒuint32_t”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jõhjsubhŒ. ”…”�”}”(hjsh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*Only supported in vangogh*”h]”hŒOnly supported in vangogh”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K hjYh²hubeh}”(h]”Œamdgpu-gfxoff-count”ah ]”h"]”Œamdgpu_gfxoff_count”ah$]”h&]”uh1hµhjÎh²hh³hÊh´Kžubh¶)�”}”(hhh]”(h»)�”}”(hŒ``amdgpu_gfxoff_residency``”h]”j)�”}”(hjÂh]”hŒamdgpu_gfxoff_residency”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj½h²hh³hÊh´K¥ubhÝ)�”}”(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. ”…”�”}”(hj×h²hh³Nh´Nubj )�”}”(hŒ*Only supported in vangogh*”h]”hŒOnly supported in vangogh”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K§hj½h²hubeh}”(h]”Œamdgpu-gfxoff-residency”ah ]”h"]”Œamdgpu_gfxoff_residency”ah$]”h&]”uh1hµhjÎh²hh³hÊh´K¥ubeh}”(h]”Œgfxoff”ah ]”h"]”Œgfxoff”ah$]”h&]”uh1hµhh·h²hh³hÊh´Ktubeh}”(h]”Œ)gpu-power-thermal-controls-and-monitoring”ah ]”h"]”Œ)gpu power/thermal controls and monitoring”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j.Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jjj¸jµjËjÈj­jªj<j9jdjajx ju j j jX jU j? j< jv js j­ jª j jj“j�jjjyjvjìjéjPjMjÃjÀjjýj’j�jVjSjºj·jøjõuŒ nametypes”}”(j‰j¸‰jˉj­‰j<‰jd‰jx ‰j ‰jX ‰j? ‰jv ‰j­ ‰j ‰j“‰j‰jy‰jì‰jP‰jÉj‰j’‰jV‰jº‰jø‰uh}”(jh·jµhËjÈj»jªjÚj9j°jaj?ju jgj j{ jU j j< j[ js jB jª jy jj° j�j#jj–jvj jéj|jMjïjÀjSjýjÎj�jjSj•j·jYjõj½uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.