Re: [PATCH v4 07/16] x86/virt/tdx: Add tdx_alloc/free_page() helpers

From: Edgecombe, Rick P

Date: Tue Dec 02 2025 - 15:03:05 EST


On Tue, 2025-12-02 at 09:38 +0200, Nikolay Borisov wrote:
> > Yea, it could be simpler if it was always guaranteed to be 2 pages. But it
> > was
> > my understanding that it would not be a fixed size. Can you point to what
> > docs
> > makes you think that?
>
> Looking at the PHYMEM.PAMT.ADD ABI spec the pages being added are always
> put into pair in rdx/r8. So e.g. looking into tdh_phymem_pamt_add rcx is
> set to a 2mb page, and subsequently we have the memcpy which simply sets
> the rdx/r8 input argument registers, no ? Or am I misunderstanding the
> code?

Hmm, you are totally right. The docs specify the size of the 4k entries, but
doesn't specify that Dynamic PAMT is supposed to provide larger sizes in the
other registers. A reasonable reading could assume 2 pages always, and the usage
of the other registers seems like an assumption.

Kirill, any history here?

Otherwise, we could turn tdx_dpamt_entry_pages() into a define and shrink the
stack allocated buffers. I'll see how much removing the loops helps.