rproc_set_firmware(9)
π rproc_set_firmware β Kernel API Manual, bestie edition β¨
okay so real quick, the manual page header situation: we're in section 9 of the Kernel API Manual, and the star of the show is rproc_set_firmware(9). she's giving kernel-internals main character energy and honestly? obsessed. π
β¨ NAME β¨
rproc_set_firmware β assign a new firmware π
π¦ SYNOPSIS π¦
int rproc_set_firmware (struct rproc *rproc , const char *fw_name );
literally that's the whole flex. two args, one int. slay. π
πΈ ARGUMENTS πΈ
rprocβ the rproc handle that the new firmware is getting assigned to. like, this is who we're handing the new firmware name to π«Άfw_nameβ the new firmware name being assigned. the actual name, the label, the whole identity β¨
π DESCRIPTION π
okay so here's the vibe: this function lets remoteproc drivers or clients configure a custom firmware name that's different from the default name used during remoteproc registration. so like, the default name is whatever it is, and this function is the "no actually, use this one" button. π
π¨ big important caveat bestie: this function does not trigger a remote processor boot. it only sets the firmware name used for a subsequent boot. so don't come crying to me wondering why nothing booted β it's not supposed to. read the room π
also, this function should also be called only when the remote processor is offline. like, offline offline. do not try this while it's running, i'm begging π
and here's the fun part β this opens up two whole doors:
- userspace can configure a different name through
sysfs, or - a kernel-level remoteproc or a remoteproc client driver can set a specific firmware when it is the one controlling the boot and shutdown of the remote processor.
either way, everybody gets a say. democracy in the remoteproc layer, we love to see it π
β RETURN β
0 on success, or a negative value upon failure. that's it, that's the return. named and shamed π
π§ SEE ALSO π§
okay this list is long and honestly it's giving family reunion. the kernel file in question is ./drivers/remoteproc/remoteproc_core.c, and then we got the whole extended friend group:
rproc_da_to_va(9)rproc_find_carveout_by_name(9)rproc_check_carveout_da(9)rproc_handle_vdev(9)rproc_handle_trace(9)rproc_handle_devmem(9)rproc_alloc_carveout(9)rproc_release_carveout(9)rproc_handle_carveout(9)rproc_add_carveout(9)rproc_mem_entry_init(9)rproc_of_resm_mem_entry_init(9)rproc_of_parse_firmware(9)rproc_alloc_registered_carveouts(9)rproc_resource_cleanup(9)rproc_trigger_recovery(9)rproc_crash_handler_work(9)rproc_boot(9)rproc_shutdown(9)rproc_detach(9)rproc_get_by_phandle(9)rproc_add(9)devm_rproc_add(9)rproc_type_release(9)rproc_alloc(9)rproc_free(9)rproc_put(9)rproc_del(9)devm_rproc_alloc(9)rproc_add_subdev(9)rproc_remove_subdev(9)rproc_get_by_child(9)rproc_report_crash(9)
i know. i know. but every single one of them is listed, so every single one of them gets their moment ππ
π the cute sign-off π
this whole page lives in ./drivers/remoteproc, dated October 2026, and it's filed under rproc_set_firmware(9). anyway go call it only when the processor's offline, ily, 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