STRUCT SCMI_VIO_MSG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct scmi_vio_msg(9) β€” the Kernel API Manual, but make it make sense πŸŽ€

okay so bestie, welcome to the Kernel API Manual entry for struct scmi_vio_msg. this little cutie is literally just a container of Transport PDU info β€” think of it as the group chat message envelope for SCMI-over-virtio. it's not doing the talking, it's holding the school bag πŸŽ’ for the messages that do. no cap, it's giving "plumbing that eats" πŸ’…


✨ NAME ✨

struct scmi_vio_msg β€” Transport PDU information, periodt 🫢

🌸 SYNOPSIS 🌸

look at her. she's beautiful. every field copied exactly, character for character, because we do not play with struct definitions πŸ”₯

struct scmi_vio_msg {
    struct scmi_msg_payld *request;
    struct scmi_msg_payld *input;
    struct list_head list;
    unsigned int rx_len;
    unsigned int max_len;
    unsigned int poll_idx;
    enum poll_states poll_status;
    spinlock_t poll_lock;
    refcount_t users;
 };

πŸ¦‹ Members πŸ¦‹

okay so let's do a vibe check on every single field, one by one, no skipping, that's the rule πŸ’–

  • request β€” the SDU used for commands. so like, this is the one that actually goes out and asks for stuff πŸ—£οΈ
  • input β€” the SDU used for (delayed) responses and notifications. the replies and the lil pings slide in here, sometimes fashionably late πŸ™ˆ
  • list β€” a list which scmi_vio_msg may be part of. yes bestie, she's a linkable icon, she can be in the group list πŸ‘‘
  • rx_len β€” input SDU size in bytes, once input has been received. so it's the real, actual size β€” but only once the input has actually landed, not before, don't be weird about it ⭐
  • max_len β€” maximum allowed SDU size in bytes. the ceiling, the limit, the "don't try it" line πŸ’€
  • poll_idx β€” the last used index registered for polling purposes, if this message transaction reply was configured for polling. iykyk β€” polling mode only, otherwise it's just vibing there 🌈
  • poll_status β€” the polling state for this message. current mood of the poll, basically ✨
  • poll_lock β€” a lock to protect poll_status. hold the line bestie, that state stays safe 🧚
  • users β€” a reference count to track this message's users, and to avoid premature freeing (and reuse) when polling and IRQ execution paths interleave. highkey the most important one β€” this is the "please don't free me while both paths are literally in the same room" guardian 🫢 honestly iconic

πŸ”₯ SEE ALSO πŸ”₯

go read these next, they're all connected, it's a whole cinematic universe 🎬


⚠️ gentle reminder bestie: all of the above is documentation of the struct, not a tutorial on how to poke at it yourself β€” the manpage describes what's there, and that's it. no invented behaviour, we don't do that here πŸ’œ

and that's the whole page, we ate, no crumbs πŸ“ this footer is coming to you straight from ./drivers/firmware/arm_scmi/tr..., dated October 2026, and yes it's still called struct scmi_vio_msg(9). slay, bye πŸ˜­πŸ‘‘

πŸ“¦ where this page comes from