zynqmp_pm_start_rpu(9)
π NAME π
okay so bestie, welcome to zynqmp_pm_start_rpu(9) β yes that's the page, yes it's from the Kernel API Manual, and yes it's kinda iconic. This one function does exactly one thing and it does it with main character energy:
zynqmp_pm_start_rpu β Boot Real-time Processing Unit (Cortex-R) on SoC π₯
like. it literally wakes up the RPU. no cap. the Cortex-R core said "i'm up, i'm up" and this call is the reason.
β¨ SYNOPSIS β¨
int zynqmp_pm_start_rpu (const u32 node , const u64 bootaddr );
that's the whole vibe π
two args, one int coming back at you. copy it character for character because we do not freestyle signatures in this house π«Ά
π ARGUMENTS π
nodeβ the power-domains id of the core πΈ like, which core are we booting, bestie? that id. this is the one.bootaddrβ the Boot address of elf π¦ the address where the elf gets to start its little life. that's the spot.
π₯ RETURN π₯
status, either success or error+reason π
so like β it works, or it tells you it didn't and why. no silent failures, no ghosting. we love a function with communication skills.
π SEE ALSO π
first up, the kernel file that actually holds this whole saga: ./drivers/firmware/xilinx/zynqmp.c π
and now the group chat β the entire extended fam, all of them (9) pages, none of them skipped, periodt:
struct zynqmp_devinfo(9), struct pm_api_feature_data(9), zynqmp_pm_ret_code(9), do_fw_call_smc(9), do_fw_call_hvc(9), zynqmp_pm_feature(9), zynqmp_pm_is_function_supported(9), zynqmp_pm_invoke_fw_fn(9), zynqmp_pm_invoke_fn(9), zynqmp_pm_get_api_version(9), zynqmp_pm_get_chipid(9), zynqmp_pm_get_family_info(9), zynqmp_pm_get_sip_svc_version(9), zynqmp_pm_get_trustzone_version(9), get_set_conduit_method(9), zynqmp_pm_query_data(9) β the whole "who am i and what firmware is this" arc, obsessed π
then the clock girlies: zynqmp_pm_clock_enable(9), zynqmp_pm_clock_disable(9), zynqmp_pm_clock_getstate(9), zynqmp_pm_clock_setdivider(9), zynqmp_pm_clock_getdivider(9), zynqmp_pm_clock_setparent(9), zynqmp_pm_clock_getparent(9), zynqmp_pm_set_pll_frac_mode(9), zynqmp_pm_get_pll_frac_mode(9), zynqmp_pm_set_pll_frac_data(9), zynqmp_pm_get_pll_frac_data(9), zynqmp_pm_set_sd_tapdelay(9), zynqmp_pm_sd_dll_reset(9), zynqmp_pm_ospi_mux_select(9) π°οΈβ¨
then the mysterious ones: zynqmp_pm_write_ggs(9), zynqmp_pm_read_ggs(9), zynqmp_pm_write_pggs(9), zynqmp_pm_read_pggs(9), zynqmp_pm_set_boot_health_status(9), zynqmp_pm_reset_assert(9), zynqmp_pm_reset_get_status(9) π (ggs. pggs. iykyk.)
the FPGA crew: zynqmp_pm_fpga_load(9), zynqmp_pm_fpga_get_status(9), zynqmp_pm_fpga_get_config_status(9) π§ and the pin people: zynqmp_pm_pinctrl_request(9), zynqmp_pm_pinctrl_release(9), zynqmp_pm_pinctrl_set_function(9), zynqmp_pm_pinctrl_get_config(9), zynqmp_pm_pinctrl_set_config(9) π
boot + power management besties: zynqmp_pm_bootmode_read(9), zynqmp_pm_bootmode_write(9), zynqmp_pm_init_finalize(9), zynqmp_pm_set_suspend_mode(9), zynqmp_pm_request_node(9), zynqmp_pm_release_node(9), zynqmp_pm_get_rpu_mode(9), zynqmp_pm_set_rpu_mode(9), zynqmp_pm_set_tcm_config(9), zynqmp_pm_get_node_status(9), zynqmp_pm_get_rpu_node_status(9) π
and the RPU fam this page lowkey belongs to: zynqmp_pm_force_pwrdwn(9), zynqmp_pm_request_wake(9), zynqmp_pm_stop_rpu(9) β yeah, stop_rpu is literally the sibling of start_rpu, they're giving sibling energy fr fr ππ
the rest of the roster, no one left behind: zynqmp_pm_set_requirement(9), zynqmp_pm_load_pdi(9), zynqmp_pm_efuse_access(9), zynqmp_pm_register_notifier(9), zynqmp_pm_system_shutdown(9), zynqmp_pm_set_feature_config(9), zynqmp_pm_get_feature_config(9), zynqmp_pm_sec_read_reg(9), zynqmp_pm_sec_mask_write_reg(9), zynqmp_pm_set_sd_config(9), zynqmp_pm_set_gem_config(9), struct zynqmp_pm_shutdown_scope(9), zynqmp_pm_is_shutdown_scope_valid(9), zynqmp_clear_pm_state(9) β
ngl that's a lot of see-also. but every single one is here, so vibe check passed β
mwah π okay that's the whole page, bestie β go boot that Cortex-R and slay.
this lil masterpiece comes to you from the source tree at ./drivers/firmware/xilinx, dated October 2026, and it lives at zynqmp_pm_start_rpu(9) forever and ever πβ¨
π¦ 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