qcom_scm_cpu_power_down(9)
π qcom_scm_cpu_power_down(9) β Kernel API Manual, bestie edition π
okay so this is a page straight out of the Kernel API Manual, and the star of the show is qcom_scm_cpu_power_down(9). yes it's a mouthful, yes it's iconic, no you don't have to pronounce it out loud at a party π
β¨ NAME β¨
qcom_scm_cpu_power_down β literally just Power down the cpu. that's it. that's the whole job. main character energy fr π
π¦ SYNOPSIS π¦
void qcom_scm_cpu_power_down (u32 flags );
so she takes one u32 called flags and returns void β no return value, no receipts, no "k bye" π she's just gone.
πΈ ARGUMENTS πΈ
flagsβ the flags that tell it how to flush cache. that's the entire description, no cap, the manpage is being lowkey mysterious about it π
π DESCRIPTION π
bestie listen. this function is an end point to power down cpu β like the final boss of "okay we're actually shutting this core down now" π₯
here's the vibe check on what happens next, and this part is important so don't scroll past it:
- if there was a pending interrupt, the control would return from this function. cool cool, you live to see another line of code β¨
- otherwise, the cpu jumps to the warm boot entry point set for this cpu upon reset. so likeβ¦ it doesn't come back to you, it goes straight to the warm boot address. that's the deal, that's the path, periodt π
so basically: pending interrupt = you come back; no pending interrupt = the cpu yeets itself to the warm boot entry point. choose your fighter π§
π SEE ALSO π
the whole friend group shows up here, so let's give them their flowers π
Kernel file ./drivers/firmware/qcom/qcom_scm.c β yes, that's where the source lives, and here's the full squad:
struct qcom_scm_qseecom_resp(9)qcom_scm_call(9)qcom_scm_call_atomic(9)qcom_scm_set_warm_boot_addr(9)qcom_scm_set_cold_boot_addr(9)qcom_scm_is_pas_available(9)qcom_scm_restore_sec_cfg_available(9)qcom_scm_assign_mem(9)qcom_scm_ocmem_lock_available(9)qcom_scm_ocmem_lock(9)qcom_scm_ocmem_unlock(9)qcom_scm_ice_available(9)qcom_scm_ice_invalidate_key(9)qcom_scm_ice_set_key(9)qcom_scm_derive_sw_secret(9)qcom_scm_generate_ice_key(9)qcom_scm_prepare_ice_key(9)qcom_scm_import_ice_key(9)qcom_scm_hdcp_available(9)qcom_scm_hdcp_req(9)qcom_scm_qseecom_call(9)qcom_scm_qseecom_get_version(9)qcom_scm_qseecom_app_get_id(9)qcom_scm_qseecom_app_send(9)qcom_scm_qtee_invoke_smc(9)qcom_scm_qtee_callback_response(9)qcom_scm_is_available(9)
that's a lot of friends and every single one of them made the list, so go read them too, iykyk π
π«Ά quick reminder: "the control would return from this function" is not a promise that the cpu comes back β it's literally the pending-interrupt branch. read the vibe check twice before you ship, bestie π
and that's the whole page!! π cute lil sign-off time: this one comes from the source under ./drivers/firmware/qcom, dated October 2026, and the page is qcom_scm_cpu_power_down(9). mwah, go power down that cpu responsibly β¨π
π
π¦ 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