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