1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Automatically generated functions to read TDX global metadata.
4  *
5  * This file doesn't compile on its own as it lacks of inclusion
6  * of SEAMCALL wrapper primitive which reads global metadata.
7  * Include this file to other C file instead.
8  */
9 
get_tdx_sys_info_features(struct tdx_sys_info_features * sysinfo_features)10 static int get_tdx_sys_info_features(struct tdx_sys_info_features *sysinfo_features)
11 {
12 	int ret = 0;
13 	u64 val;
14 
15 	if (!ret && !(ret = read_sys_metadata_field(0x0A00000300000008, &val)))
16 		sysinfo_features->tdx_features0 = val;
17 
18 	return ret;
19 }
20 
get_tdx_sys_info_tdmr(struct tdx_sys_info_tdmr * sysinfo_tdmr)21 static int get_tdx_sys_info_tdmr(struct tdx_sys_info_tdmr *sysinfo_tdmr)
22 {
23 	int ret = 0;
24 	u64 val;
25 
26 	if (!ret && !(ret = read_sys_metadata_field(0x9100000100000008, &val)))
27 		sysinfo_tdmr->max_tdmrs = val;
28 	if (!ret && !(ret = read_sys_metadata_field(0x9100000100000009, &val)))
29 		sysinfo_tdmr->max_reserved_per_tdmr = val;
30 	if (!ret && !(ret = read_sys_metadata_field(0x9100000100000010, &val)))
31 		sysinfo_tdmr->pamt_4k_entry_size = val;
32 	if (!ret && !(ret = read_sys_metadata_field(0x9100000100000011, &val)))
33 		sysinfo_tdmr->pamt_2m_entry_size = val;
34 	if (!ret && !(ret = read_sys_metadata_field(0x9100000100000012, &val)))
35 		sysinfo_tdmr->pamt_1g_entry_size = val;
36 
37 	return ret;
38 }
39 
get_tdx_sys_info(struct tdx_sys_info * sysinfo)40 static int get_tdx_sys_info(struct tdx_sys_info *sysinfo)
41 {
42 	int ret = 0;
43 
44 	ret = ret ?: get_tdx_sys_info_features(&sysinfo->features);
45 	ret = ret ?: get_tdx_sys_info_tdmr(&sysinfo->tdmr);
46 
47 	return ret;
48 }
49