scmi_xfer_raw_worker(9)
π scmi_xfer_raw_worker(9) β like, the Kernel API Manual page, bestie β¨
okay so this is a page straight out of the Kernel API Manual (scmi_xfer_raw_worker(9), section 9, we love a manpage moment π) and it's all about the work function that waits around for Raw xfer completions. yes. that's the whole vibe. let's get into it π¦
β¨ NAME β¨
scmi_xfer_raw_worker β the work function whose entire job is to wait for Raw xfers to finish, no cap π«Ά
πΈ SYNOPSIS πΈ
void scmi_xfer_raw_worker (struct work_struct *work );
like, that's it. that's the signature. she's simple, she's iconic π
π ARGUMENTS π
workβ a reference to the work. yes, literally just "a reference to the work". she said what she said π
π₯ DESCRIPTION π₯
so here's the situation, bestie. In SCMI Raw mode, once a user-provided injected SCMI message gets sent, we cannot just sit there waiting to receive its response (if any) inside the context of the injection routines π because if we did, we'd leave the userspace write syscall β the one that delivered the SCMI message to send β just hanging, pending, until eventually a reply shows up. and that's giving main character energy in the worst way π
instead, userspace should and will poll/wait on the read syscalls, which are the ones in charge of reading a received reply (if any). so like, that part's handled. slay π
now β even though reply messages are collected and reported into the SCMI Raw layer on the RX path, we nonetheless still have to properly wait for their completion as usual (and async_completion too, if needed) in order to properly release the xfer structure at the end β¨ to do that out of the context of the write/send, these waiting jobs get delegated to this deferred worker. very demure. very mindful. π§
any sent xfer that needs to be waited for is timestamped and queued for later consumption by this worker π queue aging is accounted for while choosing a timeout for the completion, BUT β and this is important β we do not really care here if we end up accidentally waiting for a bit too long π like, it's fine. it's chill. go off queen.
ngl this whole thing is basically "don't block the write syscall, hand the waiting off to the worker, and if the timeout's a lil long, who cares π "
π¦ SEE ALSO π¦
Kernel file ./drivers/firmware/arm_scmi/raw_mode.c β go read it, iykyk π
- Theory of operation(9)
- struct scmi_raw_queue(9)
- struct scmi_raw_mode_info(9)
- struct scmi_xfer_raw_waiter(9)
- struct scmi_raw_buffer(9)
- struct scmi_dbg_raw_data(9)
- scmi_xfer_raw_get_init(9)
- scmi_do_xfer_raw_start(9)
- scmi_raw_message_send(9)
- scmi_raw_message_receive(9)
- scmi_raw_mode_init(9)
- scmi_raw_mode_cleanup(9)
- scmi_raw_message_report(9)
- scmi_raw_error_report(9)
β and that's the page!! from ./drivers/firmware/arm_scmi, dated October 2026, filed under scmi_xfer_raw_worker(9) β mwah, go touch some kernel code 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