do_fw_call_smc(9)
π do_fw_call_smc β Kernel API Manual, section 9 π
okay so bestie, welcome to do_fw_call_smc(9) β the little kernel function that picks up the phone and calls the system-level platform management layer (that's SMC, and yes, we're obsessed) β¨
πΈ NAME πΈ
do_fw_call_smc β Call system-level platform management layer (SMC). that's it. that's the whole vibe. π
π¦ SYNOPSIS π¦
int do_fw_call_smc (u32 *ret_payload , u32 num_args , ... );
look at her. iconic signature. returns an int, periodt.
π ARGUMENTS π
ret_payloadβ the Returned value array π this is where the good stuff comes back out.num_argsβ the Number of variable arguments, and lowkey this one should be <= 8. like, that's the rule. don't push her past 8, she's doing her best π...β the variable arguments themselves. yeah. the little.... the vibes. π
β DESCRIPTION β
so what does she actually do? she invokes the platform management function via an SMC call β and here's the key tea: no hypervisor present π«Ά that's the whole situation. straight to the platform management layer, no middleman.
π RETURN π
Returns status β either success, or error+reason π like, she will tell you what went wrong, she's not gonna leave you guessing.
ngl bestie, always check the return value. just saying. that's the entire point of a return value π
π₯ SEE ALSO π₯
and now the part where I list literally every single thing she's connected to, because every one of these matters and I refuse to skip a single one π
Kernel file ./drivers/firmware/xilinx/zynqmp.c and friends: struct zynqmp_devinfo(9), struct pm_api_feature_data(9), zynqmp_pm_ret_code(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), 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), 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), zynqmp_pm_fpga_load(9), zynqmp_pm_fpga_get_status(9), zynqmp_pm_fpga_get_config_status(9), 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), 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), zynqmp_pm_force_pwrdwn(9), zynqmp_pm_request_wake(9), zynqmp_pm_start_rpu(9), zynqmp_pm_stop_rpu(9), 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)
like. that's the whole friend group. she knows everyone π β¨
kisses bestie, this page lives in ./drivers/firmware/xilinx, it's the October 2026 edition, and it's filed under do_fw_call_smc(9) β go call your platform management layer, but respectfully π«Άππ
π¦ 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