STRUCT ADRENO_SMMU_FAULT_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct adreno_smmu_fault_info(9) β€” a Kernel API Manual moment

Okay bestie, gather round, because this one is from the Kernel API Manual, section 9, and it's literally just a little container that carries the tea about a GPU page fault. The page you're reading is struct adreno_smmu_fault_info(9) β€” say that five times fast, iykyk 🫢


✨ NAME ✨

struct adreno_smmu_fault_info β€” a container for key fault information. That's it, that's the whole vibe: it holds the important fault deets so they can be passed along. πŸŽ€


🌸 SYNOPSIS 🌸

struct adreno_smmu_fault_info {
    u64 far;
    u64 ttbr0;
    u32 contextidr;
    u32 fsr;
    u32 fsynr0;
    u32 fsynr1;
    u32 cbfrsynra;
 };

Look at her. Seven members, all accounted for, no notes. πŸ‘‘


πŸ¦‹ Members πŸ¦‹

Every single field, explained, because we do not skip details in this house:

  • far β€” the faulting IOVA, straight from ARM_SMMU_CB_FAR. Like, where did it go wrong. πŸ“
  • ttbr0 β€” the current TTBR0 pagetable, courtesy of ARM_SMMU_CB_TTBR0. The map she was using at the time, fr fr.
  • contextidr β€” literally just the value of ARM_SMMU_CB_CONTEXTIDR. No cap.
  • fsr β€” the fault status, pulled from ARM_SMMU_CB_FSR. The actual "what happened" of it all. πŸ”₯
  • fsynr0 β€” the value of FSYNR0 from ARM_SMMU_CB_FSYNR0. Yes bestie, both of them are FSYNR0, that's exactly what the page says and we are not touching it. πŸ’€
  • fsynr1 β€” the value of FSYNR1 from ARM_SMMU_CB_FSYNR0. (See above. She said what she said. πŸ™ˆ)
  • cbfrsynra β€” the value of CBFRSYNRA from ARM_SMMU_GR1_CBFRSYNRA(idx). Note the idx β€” it's indexed, okay? Don't forget the idx. ⭐

πŸ’œ Description πŸ’œ

So here's the lore: this struct passes back key page fault information to the GPU driver through the get_fault_info function pointer. That's the whole gig. 🫢

The GPU driver can then use this information to print informative log messages and to provide deeper GPU specific insight into the fault. Basically it's handing the driver a little gift bag of context so it can actually tell you what went sideways instead of just screaming into the void. Iconic behavior, honestly. πŸ’…

Lowkey the whole point: the struct doesn't fix anything, she just delivers the info. The driver does the yapping.

🌈 SEE ALSO 🌈

  • Kernel file ./include/linux/adreno-smmu-priv.h struct adreno_smmu_priv(9) β€” go read her next, she's the main character of this friend group. ✨

And that's the page, bestie! πŸŽ€ Sourced from ./include/linux, dated October 2026, and if you see the title struct adre...u_fault_info(9) floating around, that's just the manpage being shy about long names. Mwah, go read the header file, ily. πŸ’–πŸ¦‹πŸŒ·

πŸ“¦ where this page comes from