Skip to content

Commit e8aa393

Browse files
kaihuanghansendc
authored andcommitted
x86/virt/tdx: Rename 'struct tdx_tdmr_sysinfo' to reflect the spec better
The TDX module provides a set of "Global Metadata Fields". They report things like TDX module version, supported features, and fields related to create/run TDX guests and so on. TDX organizes those metadata fields by "Classes" based on the meaning of those fields. E.g., for now the kernel only reads "TD Memory Region" (TDMR) related fields for module initialization. Those fields are defined under class "TDMR Info". Today the kernel reads some of the global metadata to initialize the TDX module. KVM will need to read additional metadata fields to run TDX guests. Move towards having the TDX host core-kernel provide a centralized, canonical, and immutable structure for the global metadata that comes out from the TDX module for all kernel components to use. More specifically, prepare the code to end up with an organization like: struct tdx_sys_info { struct tdx_sys_info_classA a; struct tdx_sys_info_classB b; ... }; Currently the kernel organizes all fields under "TDMR Info" class in 'struct tdx_tdmr_sysinfo'. Prepare for the above by renaming the structure to 'struct tdx_sys_info_tdmr' to follow the class name better. No functional change intended. Signed-off-by: Kai Huang <[email protected]> Signed-off-by: Dave Hansen <[email protected]> Reviewed-by: Adrian Hunter <[email protected]> Reviewed-by: Dan Williams <[email protected]> Link: https://lore.kernel.org/all/de165d09e0b571cfeb119a368f4be6e2888ebb93.1734188033.git.kai.huang%40intel.com
1 parent 564ea84 commit e8aa393

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

arch/x86/virt/vmx/tdx/tdx.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ static int read_sys_metadata_field(u64 field_id, u64 *data)
272272

273273
static int read_sys_metadata_field16(u64 field_id,
274274
int offset,
275-
struct tdx_tdmr_sysinfo *ts)
275+
struct tdx_sys_info_tdmr *ts)
276276
{
277277
u16 *ts_member = ((void *)ts) + offset;
278278
u64 tmp;
@@ -298,9 +298,9 @@ struct field_mapping {
298298

299299
#define TD_SYSINFO_MAP(_field_id, _offset) \
300300
{ .field_id = MD_FIELD_ID_##_field_id, \
301-
.offset = offsetof(struct tdx_tdmr_sysinfo, _offset) }
301+
.offset = offsetof(struct tdx_sys_info_tdmr, _offset) }
302302

303-
/* Map TD_SYSINFO fields into 'struct tdx_tdmr_sysinfo': */
303+
/* Map TD_SYSINFO fields into 'struct tdx_sys_info_tdmr': */
304304
static const struct field_mapping fields[] = {
305305
TD_SYSINFO_MAP(MAX_TDMRS, max_tdmrs),
306306
TD_SYSINFO_MAP(MAX_RESERVED_PER_TDMR, max_reserved_per_tdmr),
@@ -309,16 +309,16 @@ static const struct field_mapping fields[] = {
309309
TD_SYSINFO_MAP(PAMT_1G_ENTRY_SIZE, pamt_entry_size[TDX_PS_1G]),
310310
};
311311

312-
static int get_tdx_tdmr_sysinfo(struct tdx_tdmr_sysinfo *tdmr_sysinfo)
312+
static int get_tdx_sys_info_tdmr(struct tdx_sys_info_tdmr *sysinfo_tdmr)
313313
{
314314
int ret;
315315
int i;
316316

317-
/* Populate 'tdmr_sysinfo' fields using the mapping structure above: */
317+
/* Populate 'sysinfo_tdmr' fields using the mapping structure above: */
318318
for (i = 0; i < ARRAY_SIZE(fields); i++) {
319319
ret = read_sys_metadata_field16(fields[i].field_id,
320320
fields[i].offset,
321-
tdmr_sysinfo);
321+
sysinfo_tdmr);
322322
if (ret)
323323
return ret;
324324
}
@@ -342,13 +342,13 @@ static int tdmr_size_single(u16 max_reserved_per_tdmr)
342342
}
343343

344344
static int alloc_tdmr_list(struct tdmr_info_list *tdmr_list,
345-
struct tdx_tdmr_sysinfo *tdmr_sysinfo)
345+
struct tdx_sys_info_tdmr *sysinfo_tdmr)
346346
{
347347
size_t tdmr_sz, tdmr_array_sz;
348348
void *tdmr_array;
349349

350-
tdmr_sz = tdmr_size_single(tdmr_sysinfo->max_reserved_per_tdmr);
351-
tdmr_array_sz = tdmr_sz * tdmr_sysinfo->max_tdmrs;
350+
tdmr_sz = tdmr_size_single(sysinfo_tdmr->max_reserved_per_tdmr);
351+
tdmr_array_sz = tdmr_sz * sysinfo_tdmr->max_tdmrs;
352352

353353
/*
354354
* To keep things simple, allocate all TDMRs together.
@@ -367,7 +367,7 @@ static int alloc_tdmr_list(struct tdmr_info_list *tdmr_list,
367367
* at a given index in the TDMR list.
368368
*/
369369
tdmr_list->tdmr_sz = tdmr_sz;
370-
tdmr_list->max_tdmrs = tdmr_sysinfo->max_tdmrs;
370+
tdmr_list->max_tdmrs = sysinfo_tdmr->max_tdmrs;
371371
tdmr_list->nr_consumed_tdmrs = 0;
372372

373373
return 0;
@@ -921,11 +921,11 @@ static int tdmrs_populate_rsvd_areas_all(struct tdmr_info_list *tdmr_list,
921921
/*
922922
* Construct a list of TDMRs on the preallocated space in @tdmr_list
923923
* to cover all TDX memory regions in @tmb_list based on the TDX module
924-
* TDMR global information in @tdmr_sysinfo.
924+
* TDMR global information in @sysinfo_tdmr.
925925
*/
926926
static int construct_tdmrs(struct list_head *tmb_list,
927927
struct tdmr_info_list *tdmr_list,
928-
struct tdx_tdmr_sysinfo *tdmr_sysinfo)
928+
struct tdx_sys_info_tdmr *sysinfo_tdmr)
929929
{
930930
int ret;
931931

@@ -934,12 +934,12 @@ static int construct_tdmrs(struct list_head *tmb_list,
934934
return ret;
935935

936936
ret = tdmrs_set_up_pamt_all(tdmr_list, tmb_list,
937-
tdmr_sysinfo->pamt_entry_size);
937+
sysinfo_tdmr->pamt_entry_size);
938938
if (ret)
939939
return ret;
940940

941941
ret = tdmrs_populate_rsvd_areas_all(tdmr_list, tmb_list,
942-
tdmr_sysinfo->max_reserved_per_tdmr);
942+
sysinfo_tdmr->max_reserved_per_tdmr);
943943
if (ret)
944944
tdmrs_free_pamt_all(tdmr_list);
945945

@@ -1098,7 +1098,7 @@ static int init_tdmrs(struct tdmr_info_list *tdmr_list)
10981098

10991099
static int init_tdx_module(void)
11001100
{
1101-
struct tdx_tdmr_sysinfo tdmr_sysinfo;
1101+
struct tdx_sys_info_tdmr sysinfo_tdmr;
11021102
int ret;
11031103

11041104
/*
@@ -1117,17 +1117,17 @@ static int init_tdx_module(void)
11171117
if (ret)
11181118
goto out_put_tdxmem;
11191119

1120-
ret = get_tdx_tdmr_sysinfo(&tdmr_sysinfo);
1120+
ret = get_tdx_sys_info_tdmr(&sysinfo_tdmr);
11211121
if (ret)
11221122
goto err_free_tdxmem;
11231123

11241124
/* Allocate enough space for constructing TDMRs */
1125-
ret = alloc_tdmr_list(&tdx_tdmr_list, &tdmr_sysinfo);
1125+
ret = alloc_tdmr_list(&tdx_tdmr_list, &sysinfo_tdmr);
11261126
if (ret)
11271127
goto err_free_tdxmem;
11281128

11291129
/* Cover all TDX-usable memory regions in TDMRs */
1130-
ret = construct_tdmrs(&tdx_memlist, &tdx_tdmr_list, &tdmr_sysinfo);
1130+
ret = construct_tdmrs(&tdx_memlist, &tdx_tdmr_list, &sysinfo_tdmr);
11311131
if (ret)
11321132
goto err_free_tdmrs;
11331133

arch/x86/virt/vmx/tdx/tdx.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ struct tdx_memblock {
100100
};
101101

102102
/* "TDMR info" part of "Global Scope Metadata" for constructing TDMRs */
103-
struct tdx_tdmr_sysinfo {
103+
struct tdx_sys_info_tdmr {
104104
u16 max_tdmrs;
105105
u16 max_reserved_per_tdmr;
106106
u16 pamt_entry_size[TDX_PS_NR];

0 commit comments

Comments
 (0)