xref: /openbmc/qemu/target/i386/kvm/tdx.c (revision 756e12e791771034ac105a5d2c9887bbbb6b7c73)
1*756e12e7SXiaoyao Li /*
2*756e12e7SXiaoyao Li  * QEMU TDX support
3*756e12e7SXiaoyao Li  *
4*756e12e7SXiaoyao Li  * Copyright (c) 2025 Intel Corporation
5*756e12e7SXiaoyao Li  *
6*756e12e7SXiaoyao Li  * Author:
7*756e12e7SXiaoyao Li  *      Xiaoyao Li <xiaoyao.li@intel.com>
8*756e12e7SXiaoyao Li  *
9*756e12e7SXiaoyao Li  * SPDX-License-Identifier: GPL-2.0-or-later
10*756e12e7SXiaoyao Li  */
11*756e12e7SXiaoyao Li 
12*756e12e7SXiaoyao Li #include "qemu/osdep.h"
13*756e12e7SXiaoyao Li #include "qom/object_interfaces.h"
14*756e12e7SXiaoyao Li 
15*756e12e7SXiaoyao Li #include "tdx.h"
16*756e12e7SXiaoyao Li 
17*756e12e7SXiaoyao Li /* tdx guest */
18*756e12e7SXiaoyao Li OBJECT_DEFINE_TYPE_WITH_INTERFACES(TdxGuest,
19*756e12e7SXiaoyao Li                                    tdx_guest,
20*756e12e7SXiaoyao Li                                    TDX_GUEST,
21*756e12e7SXiaoyao Li                                    X86_CONFIDENTIAL_GUEST,
22*756e12e7SXiaoyao Li                                    { TYPE_USER_CREATABLE },
23*756e12e7SXiaoyao Li                                    { NULL })
24*756e12e7SXiaoyao Li 
25*756e12e7SXiaoyao Li static void tdx_guest_init(Object *obj)
26*756e12e7SXiaoyao Li {
27*756e12e7SXiaoyao Li     ConfidentialGuestSupport *cgs = CONFIDENTIAL_GUEST_SUPPORT(obj);
28*756e12e7SXiaoyao Li     TdxGuest *tdx = TDX_GUEST(obj);
29*756e12e7SXiaoyao Li 
30*756e12e7SXiaoyao Li     cgs->require_guest_memfd = true;
31*756e12e7SXiaoyao Li     tdx->attributes = 0;
32*756e12e7SXiaoyao Li 
33*756e12e7SXiaoyao Li     object_property_add_uint64_ptr(obj, "attributes", &tdx->attributes,
34*756e12e7SXiaoyao Li                                    OBJ_PROP_FLAG_READWRITE);
35*756e12e7SXiaoyao Li }
36*756e12e7SXiaoyao Li 
37*756e12e7SXiaoyao Li static void tdx_guest_finalize(Object *obj)
38*756e12e7SXiaoyao Li {
39*756e12e7SXiaoyao Li }
40*756e12e7SXiaoyao Li 
41*756e12e7SXiaoyao Li static void tdx_guest_class_init(ObjectClass *oc, const void *data)
42*756e12e7SXiaoyao Li {
43*756e12e7SXiaoyao Li }
44