STRUCT SCMI_XFERS_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct scmi_xfers_info(9) β€” the kernel API manual, but make it make sense πŸŽ€

okay so bestie, welcome to the scmi_xfers_info page from the Kernel API Manual ✨ this is the struct that manages transfer information, and honestly? it's giving backstage-pass energy for every SCMI message in flight. let's get into it πŸ¦‹


🌸 NAME 🌸

struct scmi_xfers_info β€” lowkey the structure that manages transfer information πŸ’–


✨ SYNOPSIS ✨

here's the whole shape of it, no cap, copied exactly because we do not mess with struct definitions:

struct scmi_xfers_info {
    unsigned long *xfer_alloc_table;
    spinlock_t xfer_lock;
    int max_msg;
    struct hlist_head free_xfers;
    unsigned long pending_xfers[1 << (( SCMI_PENDING_XFERS_HT_ORDER_SZ)
- 1)];
 };

πŸ‘‘ Members πŸ‘‘

  • xfer_alloc_table β€” the bitmap table for allocated messages, iykyk πŸŽ€ and plot twist: the index of this bitmap table is also used for the message sequence identifier. one table, two jobs, main character energy fr.
  • xfer_lock β€” protection for message allocation. it's the bouncer at the door of the alloc party πŸ’…
  • max_msg β€” the maximum number of messages that can be pending. that's the ceiling, the limit, the "no more bestie" number βœ‹
  • free_xfers β€” a free list for available-to-use xfers πŸ¦‹ it gets initialized with a number of xfers equal to the maximum allowed in-flight messages. so like, the guest list matches the venue capacity, obsessed.
  • pending_xfers β€” a hashtable, indexed by msg_hdr.seq, used to keep all the currently in-flight messages 🌈 it's the "where is everyone right now" board and it is thriving.

πŸ”₯ SEE ALSO πŸ”₯

okay this list is LONG and honestly iconic, so here's every single one, no skips, periodt πŸ’œ

Kernel file ./drivers/firmware/arm_scmi/driver.c, plus:

struct scmi_protocol_instance(9), struct scmi_info(9), scmi_create_protocol_devices(9), scmi_xfer_token_set(9), scmi_xfer_token_clear(9), scmi_xfer_inflight_register_unlocked(9), scmi_xfer_inflight_register(9), scmi_xfer_raw_inflight_register(9), scmi_xfer_pending_set(9), scmi_xfer_get(9), scmi_xfer_raw_get(9), scmi_xfer_raw_channel_get(9), __scmi_xfer_put(9), scmi_xfer_raw_put(9), scmi_xfer_lookup_unlocked(9), scmi_bad_message_trace(9), scmi_msg_response_validate(9), scmi_xfer_state_update(9), scmi_xfer_command_acquire(9), scmi_rx_callback(9), xfer_put(9), scmi_wait_for_message_response(9), scmi_xfer_raw_wait_for_message_response(9), do_xfer(9), do_xfer_with_response(9), xfer_get_init(9), version_get(9), scmi_set_protocol_priv(9), scmi_get_protocol_priv(9), scmi_common_extended_name_get(9), scmi_common_get_max_msg_size(9), scmi_protocol_msg_check(9), struct scmi_iterator(9), scmi_revision_area_get(9), scmi_protocol_version_negotiate(9), scmi_protocol_version_initialize(9), scmi_alloc_init_protocol_instance(9), scmi_get_protocol_instance(9), scmi_protocol_acquire(9), scmi_protocol_release(9), scmi_devm_protocol_get(9), scmi_devm_protocol_acquire(9), scmi_devm_protocol_put(9), scmi_is_transport_atomic(9), scmi_handle_get(9), scmi_handle_put(9), scmi_channels_setup(9) ✨


and that's the whole vibe check, bestie 🫢 this page lives in ./drivers/firmware/arm_scmi and it's dated October 2026, page name struct scmi_xfers_info(9) β€” go forth and manage those transfers, you absolute icon πŸ’–πŸ’…πŸŽ€

πŸ“¦ where this page comes from