xref: /qemu/target/i386/kvm/tdx.h (revision d529a2ac5ef4620173439942f78ec668f9165fc1)
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 
19*d529a2acSXiaoyao Li /* TDX requires bus frequency 25MHz */
20*d529a2acSXiaoyao Li #define TDX_APIC_BUS_CYCLES_NS 40
21*d529a2acSXiaoyao Li 
22756e12e7SXiaoyao Li typedef struct TdxGuest {
23756e12e7SXiaoyao Li     X86ConfidentialGuest parent_obj;
24756e12e7SXiaoyao Li 
25f15898b0SXiaoyao Li     QemuMutex lock;
26f15898b0SXiaoyao Li 
27f15898b0SXiaoyao Li     bool initialized;
28756e12e7SXiaoyao Li     uint64_t attributes;    /* TD attributes */
29f15898b0SXiaoyao Li     uint64_t xfam;
30d05a0858SIsaku Yamahata     char *mrconfigid;       /* base64 encoded sha348 digest */
31d05a0858SIsaku Yamahata     char *mrowner;          /* base64 encoded sha348 digest */
32d05a0858SIsaku Yamahata     char *mrownerconfig;    /* base64 encoded sha348 digest */
33756e12e7SXiaoyao Li } TdxGuest;
34756e12e7SXiaoyao Li 
351619d0e4SXiaoyao Li #ifdef CONFIG_TDX
361619d0e4SXiaoyao Li bool is_tdx_vm(void);
371619d0e4SXiaoyao Li #else
381619d0e4SXiaoyao Li #define is_tdx_vm() 0
391619d0e4SXiaoyao Li #endif /* CONFIG_TDX */
401619d0e4SXiaoyao Li 
41f15898b0SXiaoyao Li int tdx_pre_create_vcpu(CPUState *cpu, Error **errp);
42f15898b0SXiaoyao Li 
43756e12e7SXiaoyao Li #endif /* QEMU_I386_TDX_H */
44