xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/tdx-guest.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker /*
3*f80ad8b4SAndroid Build Coastguard Worker  * Userspace interface for TDX guest driver
4*f80ad8b4SAndroid Build Coastguard Worker  *
5*f80ad8b4SAndroid Build Coastguard Worker  * Copyright (C) 2022 Intel Corporation
6*f80ad8b4SAndroid Build Coastguard Worker  */
7*f80ad8b4SAndroid Build Coastguard Worker 
8*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_TDX_GUEST_H_
9*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_TDX_GUEST_H_
10*f80ad8b4SAndroid Build Coastguard Worker 
11*f80ad8b4SAndroid Build Coastguard Worker #include <linux/ioctl.h>
12*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
13*f80ad8b4SAndroid Build Coastguard Worker 
14*f80ad8b4SAndroid Build Coastguard Worker /* Length of the REPORTDATA used in TDG.MR.REPORT TDCALL */
15*f80ad8b4SAndroid Build Coastguard Worker #define TDX_REPORTDATA_LEN              64
16*f80ad8b4SAndroid Build Coastguard Worker 
17*f80ad8b4SAndroid Build Coastguard Worker /* Length of TDREPORT used in TDG.MR.REPORT TDCALL */
18*f80ad8b4SAndroid Build Coastguard Worker #define TDX_REPORT_LEN                  1024
19*f80ad8b4SAndroid Build Coastguard Worker 
20*f80ad8b4SAndroid Build Coastguard Worker /**
21*f80ad8b4SAndroid Build Coastguard Worker  * struct tdx_report_req - Request struct for TDX_CMD_GET_REPORT0 IOCTL.
22*f80ad8b4SAndroid Build Coastguard Worker  *
23*f80ad8b4SAndroid Build Coastguard Worker  * @reportdata: User buffer with REPORTDATA to be included into TDREPORT.
24*f80ad8b4SAndroid Build Coastguard Worker  *              Typically it can be some nonce provided by attestation
25*f80ad8b4SAndroid Build Coastguard Worker  *              service, so the generated TDREPORT can be uniquely verified.
26*f80ad8b4SAndroid Build Coastguard Worker  * @tdreport: User buffer to store TDREPORT output from TDCALL[TDG.MR.REPORT].
27*f80ad8b4SAndroid Build Coastguard Worker  */
28*f80ad8b4SAndroid Build Coastguard Worker struct tdx_report_req {
29*f80ad8b4SAndroid Build Coastguard Worker 	__u8 reportdata[TDX_REPORTDATA_LEN];
30*f80ad8b4SAndroid Build Coastguard Worker 	__u8 tdreport[TDX_REPORT_LEN];
31*f80ad8b4SAndroid Build Coastguard Worker };
32*f80ad8b4SAndroid Build Coastguard Worker 
33*f80ad8b4SAndroid Build Coastguard Worker /*
34*f80ad8b4SAndroid Build Coastguard Worker  * TDX_CMD_GET_REPORT0 - Get TDREPORT0 (a.k.a. TDREPORT subtype 0) using
35*f80ad8b4SAndroid Build Coastguard Worker  *                       TDCALL[TDG.MR.REPORT]
36*f80ad8b4SAndroid Build Coastguard Worker  *
37*f80ad8b4SAndroid Build Coastguard Worker  * Return 0 on success, -EIO on TDCALL execution failure, and
38*f80ad8b4SAndroid Build Coastguard Worker  * standard errno on other general error cases.
39*f80ad8b4SAndroid Build Coastguard Worker  */
40*f80ad8b4SAndroid Build Coastguard Worker #define TDX_CMD_GET_REPORT0              _IOWR('T', 1, struct tdx_report_req)
41*f80ad8b4SAndroid Build Coastguard Worker 
42*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_TDX_GUEST_H_ */
43