STRUCT STRATIX10_SVC_CONTROLLER(9)
π struct stratix10_svc_controller β the service controller β¨
okay so first things first, bestie: this page lives in the Kernel API Manual, and it's the whole vibe guide to one struct. no cap, that's it. let's get into it π«Ά
β¨ SYNOPSIS β¨
here's the shape of it, character for character, don't @ me:
struct stratix10_svc_controller {
struct device *dev;
int num_chans;
int num_active_client;
struct list_head node;
struct gen_pool *genpool;
struct completion complete_status;
svc_invoke_fn *invoke_fn;
struct stratix10_svc *svc;
struct mutex sdm_lock;
struct stratix10_async_ctrl actrl;
struct stratix10_svc_chan chans[];
};
π Members π
every single field, introduced properly like the main characters they are π
devβ the device. that's it, that's the field π«num_chansβ how many channels are sitting in thechansarraynum_active_clientβ the headcount of active service clients, fr frnodeβ list management duty, someone's gotta do itgenpoolβ the memory pool, and it's pointing at the memory regioncomplete_statusβ the state for completion. we love a completion state πinvoke_fnβ the function that issues a secure monitor call or a hypervisor call. literally the whole pointsvcβ manages the list of client svc drivers (yes, it's the manager, respect it)sdm_lockβ a mutex and it's strict: it only allows a single command single response to SDM. one at a time, no rushing the SDM πactrlβ the async control structurechansβ array of service channels, the flexible-array-iest of arrays π
πΈ Description πΈ
so what's the lore? this struct is used to create communication channels for service clients, and to handle secure monitor or hypervisor call. that's the whole job description, and honestly? iconic. π¦
π SEE ALSO π
the Kernel file is ./drivers/firmware/stratix10-svc.c, and here's the entire friend group β every single one, no skipping:
SVC_NUM_DATA_IN_FIFO(9)struct stratix10_svc(9)struct stratix10_svc_sh_memory(9)struct stratix10_svc_data_mem(9)struct stratix10_svc_data(9)struct stratix10_svc_async_handler(9)struct stratix10_async_chan(9)struct stratix10_async_ctrl(9)struct stratix10_svc_chan(9)svc_pa_to_va(9)svc_thread_cmd_data_claim(9)svc_thread_cmd_config_status(9)svc_thread_recv_status_ok(9)svc_normal_to_secure_thread(9)svc_normal_to_secure_shm_thread(9)svc_get_sh_memory(9)svc_create_memory_pool(9)svc_smccc_smc(9)svc_smccc_hvc(9)svc_smccc_1_2_full(9)get_invoke_func(9)stratix10_svc_request_channel_byname(9)stratix10_svc_add_async_client(9)stratix10_svc_remove_async_client(9)stratix10_svc_async_send(9)stratix10_svc_async_prepare_response(9)stratix10_svc_async_poll(9)stratix10_svc_async_done(9)stratix10_svc_async_init(9)stratix10_svc_async_exit(9)stratix10_svc_free_channel(9)stratix10_svc_send(9)stratix10_svc_done(9)stratix10_svc_allocate_memory(9)stratix10_svc_free_memory(9)
ngl this page is short but it ate. go read the SEE ALSO list, it's giving required reading π
and that's the whole thing! this came out of ./drivers/firmware, dated October 2026, and that's the sign-off bestie β stay slay, keep your mutexes locked, mwah ππ§ββοΈ
π¦ 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