xref: /openbmc/qemu/target/i386/kvm/tdx.h (revision d05a0858cf876f79b57a622716fbad07f5b2ea08)
1756e12e7SXiaoyao Li /* SPDX-License-Identifier: GPL-2.0-or-later */
2756e12e7SXiaoyao Li 
3756e12e7SXiaoyao Li #ifndef QEMU_I386_TDX_H
4756e12e7SXiaoyao Li #define QEMU_I386_TDX_H
5756e12e7SXiaoyao Li 
61619d0e4SXiaoyao Li #ifndef CONFIG_USER_ONLY
71619d0e4SXiaoyao Li #include CONFIG_DEVICES /* CONFIG_TDX */
81619d0e4SXiaoyao Li #endif
91619d0e4SXiaoyao Li 
10756e12e7SXiaoyao Li #include "confidential-guest.h"
11756e12e7SXiaoyao Li 
12756e12e7SXiaoyao Li #define TYPE_TDX_GUEST "tdx-guest"
13756e12e7SXiaoyao Li #define TDX_GUEST(obj)  OBJECT_CHECK(TdxGuest, (obj), TYPE_TDX_GUEST)
14756e12e7SXiaoyao Li 
15756e12e7SXiaoyao Li typedef struct TdxGuestClass {
16756e12e7SXiaoyao Li     X86ConfidentialGuestClass parent_class;
17756e12e7SXiaoyao Li } TdxGuestClass;
18756e12e7SXiaoyao Li 
19756e12e7SXiaoyao Li typedef struct TdxGuest {
20756e12e7SXiaoyao Li     X86ConfidentialGuest parent_obj;
21756e12e7SXiaoyao Li 
22f15898b0SXiaoyao Li     QemuMutex lock;
23f15898b0SXiaoyao Li 
24f15898b0SXiaoyao Li     bool initialized;
25756e12e7SXiaoyao Li     uint64_t attributes;    /* TD attributes */
26f15898b0SXiaoyao Li     uint64_t xfam;
27*d05a0858SIsaku Yamahata     char *mrconfigid;       /* base64 encoded sha348 digest */
28*d05a0858SIsaku Yamahata     char *mrowner;          /* base64 encoded sha348 digest */
29*d05a0858SIsaku Yamahata     char *mrownerconfig;    /* base64 encoded sha348 digest */
30756e12e7SXiaoyao Li } TdxGuest;
31756e12e7SXiaoyao Li 
321619d0e4SXiaoyao Li #ifdef CONFIG_TDX
331619d0e4SXiaoyao Li bool is_tdx_vm(void);
341619d0e4SXiaoyao Li #else
351619d0e4SXiaoyao Li #define is_tdx_vm() 0
361619d0e4SXiaoyao Li #endif /* CONFIG_TDX */
371619d0e4SXiaoyao Li 
38f15898b0SXiaoyao Li int tdx_pre_create_vcpu(CPUState *cpu, Error **errp);
39f15898b0SXiaoyao Li 
40756e12e7SXiaoyao Li #endif /* QEMU_I386_TDX_H */
41