STRUCT ICC_PROVIDER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 struct icc_provider(9) 🌸

okay so you picked up the Kernel API Manual bestie, and we're doing the interconnect provider today β€” no cap, this one's a baddie πŸ’…


✨ NAME ✨

struct icc_provider β€” the interconnect provider (controller) entity that might provide multiple interconnect controls 🫢

Like, might. It's giving "provider energy," not "provider guarantee." πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

struct icc_provider {
    struct list_head        provider_list;
    struct list_head        nodes;
    int (*set)(struct icc_node *src, struct icc_node *dst);
    int (*aggregate)(struct icc_node *node, u32 tag, u32 avg_bw, u32 peak_bw, u32 *agg_avg, u32 *agg_peak);
    void (*pre_aggregate)(struct icc_node *node);
    int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak);
    struct icc_node* (*xlate)(const struct of_phandle_args *spec, void *data);
    struct icc_node_data* (*xlate_extended)(const struct of_phandle_args *spec, void *data);
    struct device           *dev;
    int users;
    bool inter_set;
    void *data;
 };

look at all those function pointers. the way that this struct is literally just a group chat of callbacks πŸ’€


🧩 Members 🧩

  • provider_list β€” the list of the registered interconnect providers. it's on the list, she's registered, she's official ✨
  • nodes β€” the interconnect provider's internal list of nodes. internal!! not for public consumption, bestie πŸ™ˆ
  • set β€” pointer to the device specific set operation function. this is the one doing the actual setting 🎯
  • aggregate β€” pointer to the device specific aggregate operation function. it aggregates, it's an icon, it ate πŸ‘‘
  • pre_aggregate β€” pointer to a device specific function that gets called before the aggregation begins. and it's optional, so if you don't have one, no stress 🫢
  • get_bw β€” pointer to a device specific function to get the current bandwidth. it's giving "how much are we working with rn" 🌈
  • xlate β€” the provider-specific callback for mapping nodes from phandle arguments. sounds scary, it's just translation, iykyk πŸ¦‹
  • xlate_extended β€” the vendor-specific callback for mapping node data from phandle arguments. note: node data, not just the node. extended. upgraded. main character energy ⭐
  • dev β€” the device this interconnect provider belongs to. every provider needs their home device, periodt πŸ’–
  • users β€” count of active users. just a number. a little headcount. don't overthink her πŸ’…
  • inter_set β€” whether inter-provider pairs will be configured with set. yes/no, that's the whole vibe πŸŽ€
  • data β€” pointer to private data. private!! respect her privacy πŸ“

πŸ‘€ SEE ALSO πŸ‘€

  • Kernel file ./include/linux/interconnect-provider.h
  • struct icc_node_data(9)
  • struct icc_onecell_data(9)
  • struct icc_node(9)

go read those next, bestie, they're all linked in the group chat πŸ”₯


🧚 friendly reminder: the function pointers marked optional are optional β€” everything else is your struct's whole personality. don't skip the boring ones. 😭

that's the whole page, you absolutely crushed it πŸ’œ mwah 🫢

./include/linux Β· October 2026 Β· struct icc_provider(9) β€” that's the source, the date, and the title of the whole thing, so now you know exactly where this lore came from πŸ’…βœ¨

πŸ“¦ where this page comes from