STRUCT SCMI_PERF_PROTO_OPS(9)
β¨ struct scmi_perf_proto_ops(9) β¨
okay so this is a page from the Kernel API Manual, section 9, and it's literally the whole vibe of the SCMI Performance Protocol in one struct π«Ά
π NAME π
struct scmi_perf_proto_ops β the struct that "represents the various operations provided by SCMI Performance Protocol". yes bestie, it's the whole ops menu, one struct, no notes π
π¦ SYNOPSIS π¦
struct scmi_perf_proto_ops {
int (*num_domains_get)(const struct scmi_protocol_handle *ph);
const struct scmi_perf_domain_info __must_check *(*info_get) (const
struct scmi_protocol_handle *ph, u32 domain);
int (*limits_set)(const struct scmi_protocol_handle *ph, u32 domain,
u32 max_perf, u32 min_perf);
int (*limits_get)(const struct scmi_protocol_handle *ph, u32 domain,
u32 *max_perf, u32 *min_perf);
int (*level_set)(const struct scmi_protocol_handle *ph, u32 domain,
u32 level, bool poll);
int (*level_get)(const struct scmi_protocol_handle *ph, u32 domain,
u32 *level, bool poll);
int (*transition_latency_get)(const struct scmi_protocol_handle *ph,
u32 domain);
int (*rate_limit_get)(const struct scmi_protocol_handle *ph, u32
domain, u32 *rate_limit);
int (*device_opps_add)(const struct scmi_protocol_handle *ph, struct
device *dev, u32 domain);
int (*freq_set)(const struct scmi_protocol_handle *ph, u32 domain,
unsigned long rate, bool poll);
int (*freq_get)(const struct scmi_protocol_handle *ph, u32 domain,
unsigned long *rate, bool poll);
int (*est_power_get)(const struct scmi_protocol_handle *ph, u32
domain, unsigned long *rate, unsigned long *power);
bool (*fast_switch_possible)(const struct scmi_protocol_handle *ph,
u32 domain);
int (*fast_switch_rate_limit)(const struct scmi_protocol_handle *ph,
u32 domain, u32 *rate_limit);
enum scmi_power_scale (*power_scale_get)(const struct
scmi_protocol_handle *ph);
};
lowkey obsessed with how every single one of these takes a const struct scmi_protocol_handle *ph btw. consistent king π
πΈ MEMBERS πΈ
time for the cast list, main-character energy only β¨
num_domains_getβ gets the number of supported performance domains. like, how many lil guys are we working with π₯info_getβ get the information of a performance domain. also heads up, it's marked__must_check, so bestie... you must check it πlimits_setβ sets limits on the performance level of a domain. max and min, respectfully πlimits_getβ gets limits on the performance level of a domain. same energy, read direction πlevel_setβ sets the performance level of a domain. yes thebool pollis part of the deal π€level_getβ gets the performance level of a domain. also got abool poll, iykyk π§transition_latency_getβ gets the DVFS transition latency for a given device β±οΈrate_limit_getβ gets the minimum time (us) required between successive requests. tiny numbers, big feelings πdevice_opps_addβ adds all the OPPs for a given device. all of them, no half-sending πfreq_setβ sets the frequency for a given device using sustained frequency to sustained performance level mapping. say that five times fast πfreq_getβ gets the frequency for a given device using sustained frequency to sustained performance level mapping. same mapping, other direction, slay πest_power_getβ gets the estimated power cost for a given performance domain at a given frequency. estimates only, don't come for me β‘fast_switch_possibleβ indicates if fast DVFS switching is possible or not for a given device. returns abool, very yes-or-no of it βοΈfast_switch_rate_limitβ gets the minimum time (us) required between successive fast_switching requests. notice: fast. still rate limited. balance π₯power_scale_getβ indicates if the power values provided are in milliWatts or in some other (abstract) scale. abstract scale bestie, we don't know her either π
π SEE ALSO π
the whole friend group fr fr β the kernel file lives at ./include/linux/scmi_protocol.h, and then:
struct scmi_base_info(9)struct scmi_clk_proto_ops(9)struct scmi_power_proto_ops(9)struct scmi_sensor_reading(9)struct scmi_range_attrs(9)struct scmi_sensor_axis_info(9)struct scmi_sensor_intervals_info(9)struct scmi_sensor_info(9)struct scmi_sensor_proto_ops(9)struct scmi_reset_proto_ops(9)struct scmi_voltage_info(9)struct scmi_voltage_proto_ops(9)struct scmi_powercap_info(9)struct scmi_powercap_proto_ops(9)struct scmi_pinctrl_proto_ops(9)struct scmi_notify_ops(9)struct scmi_handle(9)module_scmi_driver(9)module_scmi_protocol(9)
ngl, read the whole gang before you go poking at performance ops, mkay? π«Ά
and that's the page!! footer tea for the very end: this one comes from ./include/linux, dated October 2026, and it's filed under struct scmi_perf_proto_ops(9) β mwah, bye bestie πππ¦
π¦ 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