IPA SMP2P COMMUNICATION WITH THE MODEM(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ 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 ✨


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