Kai Huang wrote: > Currently, the 'struct tdmr_sys_info_tdmr' which includes TDMR related > fields defines the PAMT entry sizes for TDX supported page sizes (4KB, > 2MB and 1GB) as an array: > > struct tdx_sys_info_tdmr { > ... > u16 pamt_entry_sizes[TDX_PS_NR]; > }; > > PAMT entry sizes are needed when allocating PAMTs for each TDMR. Using > the array to contain PAMT entry sizes reduces the number of arguments > that need to be passed when calling tdmr_set_up_pamt(). It also makes > the code pattern like below clearer: > > for (pgsz = TDX_PS_4K; pgsz < TDX_PS_NR; pgsz++) { > pamt_size[pgsz] = tdmr_get_pamt_sz(tdmr, pgsz, > pamt_entry_size[pgsz]); > tdmr_pamt_size += pamt_size[pgsz]; > } > > However, the auto-generated metadata reading code generates a structure > member for each field. The 'global_metadata.json' has a dedicated field > for each PAMT entry size, and the new 'struct tdx_sys_info_tdmr' looks > like: > > struct tdx_sys_info_tdmr { > ... > u16 pamt_4k_entry_size; > u16 pamt_2m_entry_size; > u16 pamt_1g_entry_size; > }; > > To prepare to use the auto-generated code, make the existing 'struct > tdx_sys_info_tdmr' look like the generated one. But when passing to > tdmrs_set_up_pamt_all(), build a local array of PAMT entry sizes from > the structure so the code to allocate PAMTs can stay the same. > > Signed-off-by: Kai Huang <kai.huang@xxxxxxxxx> Makes sense to align with the autogenerated code to reduce maintenance/review fatigue going forward. Reviewed-by: Dan Williams <dan.j.williams@xxxxxxxxx>