tdx_mcall_extend_rtmr(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– tdx_mcall_extend_rtmr β€” a Kernel API Manual moment (section 9, bestie) πŸ’–

okay so real talk, this is a page from the Kernel API Manual, and it's all about tdx_mcall_extend_rtmr β€” which is literally just a wrapper to extend RTMR registers using the TDG.MR.RTMR.EXTEND TDCALL. that's the whole vibe. let's get into it ✨


🌸 SYNOPSIS 🌸

int tdx_mcall_extend_rtmr (u8 index , u8 *data );

like, that's the signature. memorize it. it's giving "small function, big responsibilities" 🫢


πŸŽ€ ARGUMENTS πŸŽ€

  • index β€” the index of the RTMR register you wanna extend. yes, you have to tell it which one. no vibes-based guessing allowed πŸ’…
  • data β€” the address of the input buffer holding the RTMR register extend data. it's a u8 *, so it's bytes, and it's your job to make sure they're the right bytes bestie πŸ™ˆ

πŸ¦‹ DESCRIPTION πŸ¦‹

so for the actual lore: go read the section titled "TDG.MR.RTMR.EXTEND leaf" in the TDX Module v1.0 specification β€” that's where the real info on the TDG.MR.RTMR.EXTEND TDCALL lives. this page is just the wrapper energy, the spec is the main character πŸ“–βœ¨

it's used in the TDX guest driver module to let the user extend the RTMR registers. that's the whole purpose. iconic, frankly πŸ‘‘

and here's the return value tea β˜• β€” pay attention because this is the part people mess up:

  • returns 0 on success (slay πŸ’š)
  • -ENXIO for invalid operands (you gave it nonsense, bestie 😭)
  • -EBUSY for busy operation (it's booked and busy, try again later πŸ’€)
  • -EIO on other TDCALL failures (the generic "something went sideways" of it all)
ngl, keep an eye on those negative returns β€” a 0 is the only one that means you actually ate πŸ”₯

⭐ SEE ALSO ⭐

go peek at these, they're all part of the same friend group:

iykyk πŸ’œ


and that's the page!! huge shoutout to the folks over at ./arch/x86/coco/tdx for shipping this in October 2026 β€” periodt, go extend some RTMR registers responsibly πŸ§šβ€β™€οΈπŸ’–πŸŽ€

πŸ“¦ where this page comes from