Re: [PATCH v6 02/11] x86/virt/tdx: Allocate page bitmap for Dynamic PAMT

From: Kiryl Shutsemau

Date: Thu Jun 04 2026 - 12:33:13 EST


On Mon, May 25, 2026 at 07:35:06PM -0700, Rick Edgecombe wrote:
> @@ -579,7 +591,12 @@ static __init int tdmr_set_up_pamt(struct tdmr_info *tdmr,
> * Calculate the PAMT size for each TDX supported page size
> * and the total PAMT size.
> */
> - tdmr->pamt_4k_size = tdmr_get_pamt_sz(tdmr, TDX_PS_4K);
> + if (tdx_supports_dynamic_pamt(&tdx_sysinfo)) {
> + /* With Dynamic PAMT, PAMT_4K is replaced with a bitmap */
> + tdmr->pamt_4k_size = tdmr_get_pamt_bitmap_sz(tdmr);
> + } else {
> + tdmr->pamt_4k_size = tdmr_get_pamt_sz(tdmr, TDX_PS_4K);
> + }
> tdmr->pamt_2m_size = tdmr_get_pamt_sz(tdmr, TDX_PS_2M);
> tdmr->pamt_1g_size = tdmr_get_pamt_sz(tdmr, TDX_PS_1G);
> tdmr_pamt_size = tdmr->pamt_4k_size + tdmr->pamt_2m_size + tdmr->pamt_1g_size;

Maybe it would more readable if we reverse the size order:

/*
* Calculate the PAMT size for each TDX supported page size
* and the total PAMT size.
*/
tdmr->pamt_1g_size = tdmr_get_pamt_sz(tdmr, TDX_PS_1G);
tdmr->pamt_2m_size = tdmr_get_pamt_sz(tdmr, TDX_PS_2M);

if (tdx_supports_dynamic_pamt(&tdx_sysinfo)) {
/* With Dynamic PAMT, PAMT_4K is replaced with a bitmap */
tdmr->pamt_4k_size = tdmr_get_pamt_bitmap_sz(tdmr);
} else {
tdmr->pamt_4k_size = tdmr_get_pamt_sz(tdmr, TDX_PS_4K);
}

tdmr_pamt_size = tdmr->pamt_1g_size + tdmr->pamt_2m_size + tdmr->pamt_4k_size;

It allows split it into logical blocks while keeping the comment attached.

--
Kiryl Shutsemau / Kirill A. Shutemov