scmi_protoco...n_initialize(9)
π« scmi_protocol_version_initialize(9) π«
okay so this is a page from the Kernel API Manual, bestie, and it's all about scmi_protocol_version_initialize β yes the whole title gets truncated to scmi_protoco...n_initialize(9) up top because even manpages got a character limit, we don't judge π
π¦ NAME π¦
scmi_protocol_version_initialize β literally just Initialize protocol version, that's the whole vibe β¨
πΈ SYNOPSIS πΈ
void scmi_protocol_version_initialize (struct device *dev , struct
scmi_protocol_instance *pi );
Returns void β so no exit status to worry about, no return value to check, it just does the thing and leaves, main character energy honestly π
π ARGUMENTS π
devβ A device reference. Just a handle to the device, that's it π«Άpiβ A reference to the protocol instance being initialized. The one getting all the attention here π
β¨ DESCRIPTION β¨
okay so first things first: it retrieves the newest protocol version supported by the platform for this specific protocol. Like, it goes and asks the platform "hey what's the latest you got," and the platform answers π€
Here's the lowkey important part though β negotiation is attempted only when the platform advertised a protocol version newer than the most recent version known to this agent. Why? because backward compatibility is NOT assured in general between versions. Like, capital-N capital-O capital-T, not assured, do not come for me π
And if it fails to negotiate a fallback version, or fails to query the supported version at all? It just goes ahead and tries to use the newest version known to this agent anyway β even though compatibility is NOT assured. Yes bestie, that's the fallback. It's giving "we ball" ππ
β οΈ fr fr though β that fallback path means running with a version that might not be compatible. Not a guarantee, just a hope and a prayer. The manpage is very clear about this and so am I π«‘
π the version fields, explained π
Versions are defined as, and this is the part you screenshot πΈ:
pi->versionβ the version supported by the platform as returned by the query. What the platform said πpi->proto->supported_versionβ the newest version supported by this agent for this protocol. What we can handle πͺpi->negotiated_versionβ the version successfully negotiated with the platform. The one that actually got agreed on, iconic π€ph->versionβ the final version effectively chosen for this session. The one that's actually showing up to the function π₯
π SEE ALSO π
the friend group π«Ά β Kernel file ./drivers/firmware/arm_scmi/driver.c:
struct scmi_xfers_info(9)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_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 page bestie, go forth and negotiate your versions responsibly π
source: ./drivers/firmware/arm_scmi β October 2026 β mwah, love u, bye ππ
π¦ 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