dev_pm_opp_x...rmance_state(9)
π dev_pm_opp_xlate_performance_state β the Kernel API Manual, bestie edition π
okay so real talk, the header got chopped on this one (it's giving dev_pm_opp_x...rmance_state(9), iconic truncation honestly π), but the full name is dev_pm_opp_xlate_performance_state and yes we're translating performance states today. it lives in the Kernel API Manual btw, section 9, iykyk β¨
πΈ NAME πΈ
dev_pm_opp_xlate_performance_state β find the required OPP's pstate for src_table. that's the whole mission, no cap π«Ά
β¨ SYNOPSIS β¨
int dev_pm_opp_xlate_performance_state (struct opp_table *src_table ,
struct opp_table *dst_table , unsigned int pstate );
look at that signature, it ate π
π¦ ARGUMENTS π¦
- src_table β the OPP table that has
dst_tableas one of its required OPP tables. main character table, fr. - dst_table β the required OPP table of the
src_table. it's the plus-one π - pstate β the current performance state of
src_table. currently the vibe we're working with β
π DESCRIPTION π
okay so what this bad boy does: it returns the pstate of the OPP (the one hanging out in dst_table) that's pointed out by the "required-opps" property of the OPP (the one living in src_table) which has its performance state set to pstate.
literally it's matchmaking: you give it a pstate from src_table, it follows the "required-opps" breadcrumb, and hands you back the matching pstate over in dst_table. lowkey obsessed with it πβ¨
π₯ RETURN π₯
- Zero or positive performance state on success β slay π
- negative value on errors β π (that's the failure path, handle it pls, don't just ignore it)
π SEE ALSO π
bestie, the whole OPP friend group showed up for this one, and every single one of them is linked. no gatekeeping π«Ά all of these live in the kernel file ./drivers/opp/core.c:
_find_opp_table(9)dev_pm_opp_get_bw(9)dev_pm_opp_get_voltage(9)dev_pm_opp_get_supplies(9)dev_pm_opp_get_power(9)dev_pm_opp_get_freq_indexed(9)dev_pm_opp_get_level(9)dev_pm_opp_get_required_pstate(9)dev_pm_opp_is_turbo(9)dev_pm_opp_get_max_clock_latency(9)dev_pm_opp_get_max_volt_latency(9)dev_pm_opp_get_max_transition_latency(9)dev_pm_opp_get_suspend_opp_freq(9)dev_pm_opp_get_opp_count(9)dev_pm_opp_find_freq_exact(9)dev_pm_opp_find_key_exact(9)dev_pm_opp_find_freq_exact_indexed(9)dev_pm_opp_find_freq_ceil(9)dev_pm_opp_find_freq_ceil_indexed(9)dev_pm_opp_find_freq_floor(9)dev_pm_opp_find_freq_floor_indexed(9)dev_pm_opp_find_level_exact(9)dev_pm_opp_find_level_ceil(9)dev_pm_opp_find_level_floor(9)dev_pm_opp_find_bw_ceil(9)dev_pm_opp_find_bw_floor(9)dev_pm_opp_set_rate(9)dev_pm_opp_set_opp(9)dev_pm_opp_remove(9)dev_pm_opp_remove_all_dynamic(9)_opp_add_v1(9)dev_pm_opp_set_config(9)dev_pm_opp_clear_config(9)devm_pm_opp_set_config(9)dev_pm_opp_xlate_required_opp(9)dev_pm_opp_add_dynamic(9)_opp_set_availability(9)dev_pm_opp_adjust_voltage(9)dev_pm_opp_sync_regulators(9)dev_pm_opp_enable(9)dev_pm_opp_disable(9)dev_pm_opp_register_notifier(9)dev_pm_opp_unregister_notifier(9)dev_pm_opp_remove_table(9)
ngl the manpage name is literally truncated in the official header (dev_pm_opp_x...rmance_state(9)) β that's not me being lazy, that's just how it ships π
and that's the page! source is ./drivers/opp, dated October 2026, and the whole thing is filed under dev_pm_opp_x...rmance_state(9) π bye bestie, go translate some pstates β¨π§ββοΈ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms