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