mhi_pm_resume_force(9)
π mhi_pm_resume_force β the kernel API manual, bestie edition
okay so real talk, this page lives in the kernel API manual section 9, and it's all about one very specific little rescue mission. the function is mhi_pm_resume_force, and yes it does exactly what it says on the tin. let's get into it β¨
β¨ NAME β¨
mhi_pm_resume_force β force resume MHI from a suspended state π«Ά
πΈ SYNOPSIS πΈ
int mhi_pm_resume_force (struct mhi_controller *mhi_cntrl );
like, that's it. one arg. no drama. π
π ARGUMENTS π
mhi_cntrlβ the MHI controller. that's the one, bestie π
π¦ DESCRIPTION π¦
so here's the tea: this thing resumes the device irrespective of its MHI state. no vibe check first, no "are you in the right state?" small talk. it just goes. π₯
now, per the MHI spec, devices are supposed to be in M3 state during resume. that's the rule. that's what the spec says. but β and hear me out β some devices seem to be in a different MHI state other than M3, and they literally continue working fine if you just allow them to. they're fine! they're thriving! they're just not following the dress code π
this API is intended to be used for such devices. the ones that are lowkey built different. iykyk π
β RETURN β
0 if the resume succeeds β slay π a negative error code otherwise β not slay, sorry babe π
π SEE ALSO π
okay this list is LONG but every single one of these is invited to the party, no cap. the source of truth here is the kernel file ./include/linux/mhi.h:
enum mhi_callback(9)enum mhi_flags(9)enum mhi_device_type(9)enum mhi_ch_type(9)struct mhi_buf(9)struct image_info(9)struct mhi_link_info(9)enum mhi_ee_type(9)enum mhi_state(9)enum mhi_ch_ee_mask(9)enum mhi_er_data_type(9)enum mhi_db_brst_mode(9)struct mhi_channel_config(9)struct mhi_event_config(9)struct mhi_controller_config(9)struct mhi_controller(9)struct mhi_device(9)struct mhi_result(9)struct mhi_driver(9)mhi_alloc_controller(9)mhi_free_controller(9)mhi_register_controller(9)mhi_unregister_controller(9)__mhi_driver_register(9)mhi_driver_unregister(9)mhi_set_mhi_state(9)mhi_notify(9)mhi_get_free_desc_count(9)mhi_prepare_for_power_up(9)mhi_async_power_up(9)mhi_sync_power_up(9)mhi_power_down(9)mhi_power_down_keep_dev(9)mhi_unprepare_after_power_down(9)mhi_pm_suspend(9)mhi_pm_resume(9)mhi_download_rddm_image(9)mhi_force_rddm_mode(9)mhi_get_exec_env(9)mhi_get_mhi_state(9)mhi_soc_reset(9)mhi_device_get_sync(9)mhi_device_put(9)mhi_prepare_for_transfer(9)mhi_unprepare_from_transfer(9)mhi_queue_buf(9)mhi_queue_skb(9)mhi_queue_is_full(9)mhi_get_channel_doorbell_offset(9)
fr fr go read ./include/linux/mhi.h if you want the whole lore. it's giving encyclopedia but make it slay π
okay that's the page!! it comes to you from the kernel source at ./include/linux, dated October 2026, and it's filed under mhi_pm_resume_force(9). mwah, go force-resume something π§π
π¦ 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