rproc_detach(9)
π rproc_detach(9)
okay so this is a page straight outta the Kernel API Manual (that's the manual name, bestie, we're fancy now) and it's all about rproc_detach β one little function with main character energy. sit down, grab a strawberry π, let's go.
β¨ NAME β¨
rproc_detach β detach the remote processor from the remoteproc core. yeah. that's the whole gig. iconic honestly π
π¦ SYNOPSIS π¦
int rproc_detach (struct rproc *rproc );
πΈ ARGUMENTS πΈ
rprocβ the remote processor. that's it. that's the argument. it's the one thing you gotta hand over π«Ά
π DESCRIPTION π
so what it does is: it detaches a remote processor β and like, specifically one that was previously attached to with rproc_attach. so this is the breakup function, not the first-date function, iykyk πβ¨
now here's the lowkey important part: in case rproc is still being used by an additional user(s), this function will just decrement the power refcount and exit, without disconnecting the device. so no dramatic goodbye scene. it literally just goes "noted" and leaves π it is NOT severing the connection if other people are still holding on.
rproc_detach calls __rproc_detach in order to let a remote processor know that services provided by the application processor are no longer available. that's the whole message. "bestie the app processor services are gone, no cap."
and from there β this is the slay part β it should be possible to remove the platform driver and even power cycle the application processor (if the HW supports it) without needing to switch off the remote processor. so you can restart one side without dragging the other down with you. healthy boundaries periodt π§ββοΈ
β οΈ just remember: that power-cycle thing is conditional β if the HW supports it. don't come for me if your hardware says no π
π₯ RETURN π₯
0on success π- and an appropriate error value otherwise π
π SEE ALSO π
kernel file ./drivers/remoteproc/remoteproc_core.c, and honestly the whole 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_get_by_phandle(9)rproc_set_firmware(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)
π and that's the page!! this lil gem lives in ./drivers/remoteproc and it's stamped October 2026 β future vibes only β go detach something responsibly, 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