ipa_probe(9)
π ipa_probe(9) β like, the actual manual page, bestie π
okay so this is a page from the Kernel API Manual, and it's about ipa_probe β the IPA platform driver probe function. yes it's a mouthful, no we're not scared of it. let's go β¨
πΈ NAME πΈ
ipa_probe β the IPA platform driver probe function, aka the glow-up entry point for the whole IPA driver π
π¦ SYNOPSIS π¦
int ipa_probe (struct platform_device *pdev );
literally that's it. one function, one job, main character energy fr π
π ARGUMENTS π
pdevβ platform device pointer. that's the plug, bestie π
β RETURN β
0if successful π- a negative error code if not π β and yes, that error code might legitimately be
EPROBE_DEFER, which is the "not yet, ask me again later" of the kernel world π
π₯ DESCRIPTION π₯
so this right here? this is the main entry point for the IPA driver. the front door. the bouncer at the club. and the initialization lowkey happens in several stages, in this exact order:
- the "init" stage β all the stuff that can be set up without touching the IPA hardware. no hardware access needed, it's giving prep work in your pajamas π§
- the "config" stage β this one does need IPA power to be active, because it reads and writes IPA registers. but ngl it does not need IPA immediate commands, so it's chiller than it sounds π
- the "setup" stage β this one uses IPA immediate commands, so it straight up requires the GSI layer to be initialized first. no GSI, no setup, periodt π
now, here's the fun part π a Boolean Device Tree property called modem-init decides who handles GSI initialization:
- AP (Trust Zone) does it, or
- the modem does it
if the AP does the GSI initialization, then the setup phase is entered only after that has completed successfully π«Ά
if the modem does it instead, the modem initializes the GSI layer and then signals that it's finished by sending an SMP2P interrupt to the AP β and that is what triggers the start of IPA setup. iconic behavior, honestly β‘
bestie please note: the modem-init property is what steers this whole flow, so don't be surprised when the setup phase kicks off from an interrupt instead of from your own code π
π SEE ALSO π
- Kernel file
./drivers/net/ipa/ipa_main.c - The IP Accelerator(9)
enum ipa_firmware_loader(9)ipa_setup(9)ipa_teardown(9)ipa_hardware_dcd_config(9)ipa_hardware_config(9)ipa_hardware_deconfig(9)ipa_config(9)ipa_deconfig(9)
like, read them all, iykyk ππ
and that's the page!! π this lil beauty lives under ./drivers/net/ipa and it's dated October 2026, in case anyone asks β and it's still ipa_probe(9), always and forever π«
mwah, go probe 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