Re: [PATCH 5/6] x86/virt/tdx: Make TDX module initialize the extensions

From: Xu Yilun

Date: Tue Aug 25 2026 - 05:53:58 EST


> Not specifically. Just wondering what it is doing. Like is it the big operation
> to prep the memory, and ADD just hands pages which sit on a list waiting the
> real work?

Yes, TDH.EXT.INIT is the big operation to prep the memory. ADD just hands
pages.


> Or more like a "we think we are good to go" notification from the
> VMM?
>
> > I can think of some case that TDH.EXT.MEM.ADD is not
> > needed but the extensions initialization is needed. For example: after
> > an compatible TDX module update.
> >
> > I may ask the TDX module team to get a better understanding.
>
> That this is also called during an update just raises further questions to me.
> If is doing initing of the memory, then what happens during an update? I'd
> expect memory would need to be persisted across an update, not initialized. Or

The update of the extensions is just like the basic TDX module update.

TDX module The extensions
================= =====================
execution memory SEAM range Added by TDH.EXT.MEM.ADD

binary loading P-SEAMLDR.INSTALL TDH.EXT.INIT

initialization TDH.SYS.INIT/LP.INIT TDH.EXT.INIT

resuming state TDH.SYS.UPDATE TDH.EXT.INIT
(consume handoff data)


The extensions memory is mainly for their own execution context, code &
data. During update, the execution binary of the extensions must also
be updated to match the new TDX module binary. That means the execution
context is re-built, the memory is re-intialized.

> it is doing something different when called after a TDH.SYS.UPDATE? Does it
> consume the handoff data?

So TDH.EXT.INIT does mostly the same after update, it re-builds the
execution context from scratch. The difference is that it then
consumes the handoff data if any.