tools/testing/selftests/tdx/tdx_guest_test.c
Source file repositories/reference/linux-study-clean/tools/testing/selftests/tdx/tdx_guest_test.c
File Facts
- System
- Linux kernel
- Corpus path
tools/testing/selftests/tdx/tdx_guest_test.c- Extension
.c- Size
- 4624 bytes
- Lines
- 164
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: implementation source
- Status
- source implementation candidate
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
sys/ioctl.herrno.hfcntl.hlinux/tdx-guest.hkselftest_harness.h
Detected Declarations
struct tdreport_typestruct reportmacstruct td_infostruct tdreportfunction print_array_hex
Annotated Snippet
struct tdreport_type {
__u8 type;
__u8 sub_type;
__u8 version;
__u8 reserved;
};
/**
* struct reportmac - TDX guest report data, MAC and TEE hashes.
* @type: TDREPORT type header.
* @reserved1: Reserved for future extension.
* @cpu_svn: CPU security version.
* @tee_tcb_info_hash: SHA384 hash of TEE TCB INFO.
* @tee_td_info_hash: SHA384 hash of TDINFO_STRUCT.
* @reportdata: User defined unique data passed in TDG.MR.REPORT request.
* @reserved2: Reserved for future extension.
* @mac: CPU MAC ID.
*
* It is MAC-protected and contains hashes of the remainder of the
* report structure along with user provided report data. More details can
* be found in TDX v1.0 Module specification, sec titled "REPORTMACSTRUCT"
*/
struct reportmac {
struct tdreport_type type;
__u8 reserved1[12];
__u8 cpu_svn[16];
__u8 tee_tcb_info_hash[48];
__u8 tee_td_info_hash[48];
__u8 reportdata[64];
__u8 reserved2[32];
__u8 mac[32];
};
/**
* struct td_info - TDX guest measurements and configuration.
* @attr: TDX Guest attributes (like debug, spet_disable, etc).
* @xfam: Extended features allowed mask.
* @mrtd: Build time measurement register.
* @mrconfigid: Software-defined ID for non-owner-defined configuration
* of the guest - e.g., run-time or OS configuration.
* @mrowner: Software-defined ID for the guest owner.
* @mrownerconfig: Software-defined ID for owner-defined configuration of
* the guest - e.g., specific to the workload.
* @rtmr: Run time measurement registers.
* @reserved: Added for future extension.
*
* It contains the measurements and initial configuration of the TDX guest
* that was locked at initialization and a set of measurement registers
* that are run-time extendable. More details can be found in TDX v1.0
* Module specification, sec titled "TDINFO_STRUCT".
*/
struct td_info {
__u8 attr[8];
__u64 xfam;
__u64 mrtd[6];
__u64 mrconfigid[6];
__u64 mrowner[6];
__u64 mrownerconfig[6];
__u64 rtmr[24];
__u64 reserved[14];
};
/*
* struct tdreport - Output of TDCALL[TDG.MR.REPORT].
* @reportmac: Mac protected header of size 256 bytes.
* @tee_tcb_info: Additional attestable elements in the TCB are not
* reflected in the reportmac.
* @reserved: Added for future extension.
* @tdinfo: Measurements and configuration data of size 512 bytes.
*
* More details can be found in TDX v1.0 Module specification, sec
* titled "TDREPORT_STRUCT".
*/
struct tdreport {
struct reportmac reportmac;
__u8 tee_tcb_info[239];
__u8 reserved[17];
struct td_info tdinfo;
};
static void print_array_hex(const char *title, const char *prefix_str,
const void *buf, int len)
{
int i, j, line_len, rowsize = HEX_DUMP_SIZE;
const __u8 *ptr = buf;
printf("\t\t%s", title);
for (j = 0; j < len; j += rowsize) {
line_len = rowsize < (len - j) ? rowsize : (len - j);
Annotation
- Immediate include surface: `sys/ioctl.h`, `errno.h`, `fcntl.h`, `linux/tdx-guest.h`, `kselftest_harness.h`.
- Detected declarations: `struct tdreport_type`, `struct reportmac`, `struct td_info`, `struct tdreport`, `function print_array_hex`.
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.