ENUM IPC_PHASE(9)
π enum ipc_phase(9) β Kernel API Manual β¨
okay so bestie, this is a page straight out of the Kernel API Manual, and it's all about enum ipc_phase β the little state machine that tracks the different AP and CP phases. π It's lowkey the backbone of the whole vibe check between the application processor and the communication processor, so let's get into it.
πΈ NAME πΈ
enum ipc_phase β different AP and CP phases, periodt.
Here's the tea tho: the enums that are defined after "IPC_P_ROM" and before "IPC_P_RUN" indicate the operating state where the CP can respond to any requests. So like, if you're ever introducing a new phase, this shall be taken into consideration. Not optional, bestie β it's giving "read the room" energy. π
π¦ SYNOPSIS π¦
enum ipc_phase {
IPC_P_OFF ,
IPC_P_OFF_REQ ,
IPC_P_CRASH ,
IPC_P_CD_READY ,
IPC_P_ROM ,
IPC_P_PSI ,
IPC_P_EBL ,
IPC_P_RUN
};
β¨ Constants β¨
IPC_P_OFFβ on the host PC, the PCIe device link settings are known about the combined power on, no cap. The PC is running, the driver is loaded, and the CP is in power off mode. The PCIe bus driver calls the device power modeD3hot. In this phase the driver polls the device until the device is in the power on state and signals the power modeD0. πIPC_P_OFF_REQβ the intermediate phase between cleanup activity starts and ends. Like the awkward gap between leaving the group chat and actually going to sleep, yk? πIPC_P_CRASHβ the phase indicating CP crash. πIPC_P_CD_READYβ the phase indicating CP core dump is ready. π«ΆIPC_P_ROMβ after power on, CP starts in ROM mode and the IPC ROM driver is waiting150 msfor the AP active notification saved in the PCI link status register. Literally waiting 150 whole milliseconds, iconic patience. β³IPC_P_PSIβ primary signed image download phase. π₯IPC_P_EBLβ extended bootloader phase. π₯ΎIPC_P_RUNβ the phase after flashing to RAM is the RUNTIME phase. That's the main character era right there. π₯
real talk: phasesIPC_P_PSIandIPC_P_EBLare the ones living in that"IPC_P_ROM"β"IPC_P_RUN"window, so they're the "CP can respond to any requests" girlies. Keep that in mind if you're adding new phases!! π
π SEE ALSO π
Kernel file ./drivers/net/wwan/iosm/iosm_ipc_imem.h plus the whole friend group: enum ipc_ctype(9), struct ipc_pipe(9), struct ipc_mem_channel(9), struct iosm_imem(9), ipc_imem_init(9), ipc_imem_pm_s2idle_sleep(9), ipc_imem_pm_suspend(9), ipc_imem_pm_resume(9), ipc_imem_cleanup(9), ipc_imem_irq_process(9), imem_get_device_sleep_state(9), ipc_imem_td_update_timer_suspend(9), ipc_imem_channel_close(9), ipc_imem_channel_alloc(9), ipc_imem_channel_open(9), ipc_imem_td_update_timer_start(9), ipc_imem_ul_write_td(9), ipc_imem_ul_send(9), ipc_imem_channel_update(9), ipc_imem_channel_free(9), ipc_imem_hrtimer_stop(9), ipc_imem_pipe_cleanup(9), ipc_imem_pipe_close(9), ipc_imem_phase_update(9), ipc_imem_phase_get_string(9), ipc_imem_msg_send_feature_set(9), ipc_imem_ipc_init_check(9), ipc_imem_channel_init(9), ipc_imem_devlink_trigger_chip_info(9).
okay that's the whole page bestie, go forth and phase responsibly π§π
this little cutie lives in ./drivers/net/wwan/iosm, dated October 2026, and it's filed under enum ipc_phase(9). mwah, bye! π
πΈ
π¦ 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