pm_genpd_init(9)
π pm_genpd_init β the Kernel API Manual glow-up β¨
okay so real talk, this one lives in the Kernel API Manual (section 9, the big-kid kernel section, iykyk) and it's literally the "make a generic I/O PM domain object exist" moment. main character energy for a struct π
β¨ NAME β¨
pm_genpd_init β Initialize a generic I/O PM domain object. That's it, that's the whole vibe: you're bringing a genpd into the world πΌ
π¦ SYNOPSIS π¦
int pm_genpd_init (struct generic_pm_domain *genpd , struct
dev_power_governor *gov , bool is_off );
three args, one int back, no cap. nothing else to it bestie π
πΈ ARGUMENTS πΈ
genpdβ the PM domain object you're initializing. this is the one, the main character, the struct getting its whole setup π«Άgovβ the PM domain governor you're associating with the domain. and yes, it may beNULLβ so if you don't have one, it's not a crisis, just passNULLand keep it moving πis_offβ the initial value of the domain'spower_is_offfield. yes literally that, it's just seeding the starting state, lowkey important β
π DESCRIPTION π
Returns 0 on successful initialization β slay, we love a zero π β else a negative error code. so like, check your return value, bestie, negative means it did not eat π
π₯ SEE ALSO π₯
the whole friend group, fr fr β and also the kernel file it lives in: ./drivers/pmdomain/core.c π
dev_pm_genpd_set_performance_state(9)dev_pm_genpd_set_next_wakeup(9)dev_pm_genpd_get_next_hrtimer(9)dev_pm_genpd_set_hwmode(9)dev_pm_genpd_get_hwmode(9)dev_pm_genpd_rpm_always_on(9)dev_pm_genpd_is_on(9)pm_genpd_inc_rejected(9)genpd_queue_power_off_work(9)genpd_power_off(9)genpd_power_on(9)genpd_power_off_work_fn(9)__genpd_runtime_suspend(9)__genpd_runtime_resume(9)genpd_runtime_suspend(9)genpd_runtime_resume(9)genpd_power_off_unused(9)genpd_sync_power_off(9)genpd_sync_power_on(9)genpd_prepare(9)genpd_finish_suspend(9)genpd_suspend_noirq(9)genpd_finish_resume(9)genpd_resume_noirq(9)genpd_freeze_noirq(9)genpd_thaw_noirq(9)genpd_poweroff_noirq(9)genpd_restore_noirq(9)genpd_complete(9)dev_pm_genpd_suspend(9)dev_pm_genpd_resume(9)pm_genpd_add_device(9)pm_genpd_remove_device(9)dev_pm_genpd_add_notifier(9)dev_pm_genpd_remove_notifier(9)pm_genpd_add_subdomain(9)pm_genpd_remove_subdomain(9)pm_genpd_remove(9)struct of_genpd_provider(9)genpd_xlate_simple(9)genpd_xlate_onecell(9)genpd_add_provider(9)of_genpd_add_provider_simple(9)of_genpd_add_provider_onecell(9)of_genpd_del_provider(9)genpd_get_from_provider(9)of_genpd_add_child_ids(9)of_genpd_remove_child_ids(9)of_genpd_add_device(9)of_genpd_add_subdomain(9)of_genpd_remove_subdomain(9)of_genpd_remove_last(9)genpd_dev_pm_detach(9)genpd_dev_pm_attach(9)genpd_dev_pm_attach_by_id(9)genpd_dev_pm_attach_by_name(9)of_genpd_parse_idle_states(9)of_genpd_sync_state(9)
bestie note: that SEE ALSO list is long long, so don't panic β it's just the whole genpd extended universe showing up to support you π«Άπ
π
and that's the page!! source is ./drivers/pmdomain, version/date is October 2026, and it's all from the Kernel API Manual (pm_genpd_init(9)) β go initialize something iconic ππβ¨
π¦ 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