IPA SMP2P COMMUNICATION WITH THE MODEM(9)
π¦ IPA SMP2P communication with the modem π¦
okay so this is from the Kernel API Manual (section 9, kernel API, bestie β we're in the big leagues now π ) and it's literally all about how the IPA driver talks to the modem, so let's get into it β¨
SMP2P is a primitive communication mechanism available between the AP and the modem. Yep β primitive, it's giving humble little messenger π and the IPA driver uses it for exactly two purposes, no cap:
- to enable the modem to state that the GSI hardware is ready to use
- to communicate the state of IPA power in the event of a crash
πΈ the GSI readiness thing πΈ
GSI needs to have early initialization completed before it can be used β like, it literally cannot function until that's done, periodt. This initialization is done either by Trust Zone or by the modem. In the latter case (modem doing it π), the modem uses an SMP2P interrupt to tell the AP IPA driver when the GSI is ready to use. cute, efficient, iconic π«Ά
β‘ the power-state thing β‘
The modem is also able to inquire about the current state of IPA power by trigging another SMP2P interrupt to the AP. (yes, "trigging" β that's the manpage's word, we don't gatekeep π)
So how do we communicate whether power is enabled? With two SMP2P state bits, bestie:
- one to indicate the power state (on or off)
- a second to indicate the power state bit is valid
The modem will poll the valid bit until it is set, and at that time records whether the AP has IPA power enabled. lowkey a vibe check loop, and honestly? it works πβ¨
π the panic scenario π
Finally, if the AP kernel panics, we update the SMP2P state bits even if we never receive an interrupt from the modem requesting this. not us being proactive during a whole kernel panic β main character energy fr fr π₯
β¨ SEE ALSO β¨
- Kernel file
./drivers/net/ipa/ipa_smp2p.c struct ipa_smp2p(9)ipa_smp2p_notify(9)
and that's the whole page, bestie, go read the source if you want more π
from ./drivers/net/ipa, October 2026 β mwah, take care of yourselves, drink water, and don't forget your early initialization πππ§
π¦ 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