xref: /openbmc/linux/arch/x86/include/asm/shared/tdx.h (revision 7a3a4018)
14b05f815SKuppuswamy Sathyanarayanan /* SPDX-License-Identifier: GPL-2.0 */
24b05f815SKuppuswamy Sathyanarayanan #ifndef _ASM_X86_SHARED_TDX_H
34b05f815SKuppuswamy Sathyanarayanan #define _ASM_X86_SHARED_TDX_H
44b05f815SKuppuswamy Sathyanarayanan 
54c5b9aacSKirill A. Shutemov #include <linux/bits.h>
64c5b9aacSKirill A. Shutemov #include <linux/types.h>
74c5b9aacSKirill A. Shutemov 
84c5b9aacSKirill A. Shutemov #define TDX_HYPERCALL_STANDARD  0
94c5b9aacSKirill A. Shutemov 
104b05f815SKuppuswamy Sathyanarayanan #define TDX_CPUID_LEAF_ID	0x21
114b05f815SKuppuswamy Sathyanarayanan #define TDX_IDENT		"IntelTDX    "
124b05f815SKuppuswamy Sathyanarayanan 
134c5b9aacSKirill A. Shutemov #ifndef __ASSEMBLY__
144c5b9aacSKirill A. Shutemov 
154c5b9aacSKirill A. Shutemov /*
164c5b9aacSKirill A. Shutemov  * Used in __tdx_hypercall() to pass down and get back registers' values of
174c5b9aacSKirill A. Shutemov  * the TDCALL instruction when requesting services from the VMM.
184c5b9aacSKirill A. Shutemov  *
194c5b9aacSKirill A. Shutemov  * This is a software only structure and not part of the TDX module/VMM ABI.
204c5b9aacSKirill A. Shutemov  */
214c5b9aacSKirill A. Shutemov struct tdx_hypercall_args {
220da908c2SKirill A. Shutemov 	u64 r8;
230da908c2SKirill A. Shutemov 	u64 r9;
244c5b9aacSKirill A. Shutemov 	u64 r10;
254c5b9aacSKirill A. Shutemov 	u64 r11;
264c5b9aacSKirill A. Shutemov 	u64 r12;
274c5b9aacSKirill A. Shutemov 	u64 r13;
284c5b9aacSKirill A. Shutemov 	u64 r14;
294c5b9aacSKirill A. Shutemov 	u64 r15;
300da908c2SKirill A. Shutemov 	u64 rdi;
310da908c2SKirill A. Shutemov 	u64 rsi;
320da908c2SKirill A. Shutemov 	u64 rbx;
330da908c2SKirill A. Shutemov 	u64 rdx;
344c5b9aacSKirill A. Shutemov };
354c5b9aacSKirill A. Shutemov 
364c5b9aacSKirill A. Shutemov /* Used to request services from the VMM */
37*7a3a4018SKirill A. Shutemov u64 __tdx_hypercall(struct tdx_hypercall_args *args);
38*7a3a4018SKirill A. Shutemov u64 __tdx_hypercall_ret(struct tdx_hypercall_args *args);
394c5b9aacSKirill A. Shutemov 
404c5b9aacSKirill A. Shutemov /* Called from __tdx_hypercall() for unrecoverable failure */
414c5b9aacSKirill A. Shutemov void __tdx_hypercall_failed(void);
424c5b9aacSKirill A. Shutemov 
434c5b9aacSKirill A. Shutemov #endif /* !__ASSEMBLY__ */
444b05f815SKuppuswamy Sathyanarayanan #endif /* _ASM_X86_SHARED_TDX_H */
45