@@ -2587,6 +2587,8 @@ static int kvm_confidential_guest_init(MachineState *ms, Error **errp)
{
if (object_dynamic_cast(OBJECT(ms->cgs), TYPE_SEV_GUEST)) {
return sev_kvm_init(ms->cgs, errp);
+ } else if (object_dynamic_cast(OBJECT(ms->cgs), TYPE_SW_PROTECTED_VM)) {
+ return sw_protected_vm_kvm_init(ms, errp);
}
return 0;
@@ -10,10 +10,20 @@
*/
#include "qemu/osdep.h"
+#include "qapi/error.h"
#include "qom/object_interfaces.h"
+#include "hw/i386/x86.h"
#include "sw-protected-vm.h"
+int sw_protected_vm_kvm_init(MachineState *ms, Error **errp)
+{
+ SwProtectedVm *spvm = SW_PROTECTED_VM(OBJECT(ms->cgs));
+
+ spvm->parent_obj.ready = true;
+ return 0;
+}
+
/* x86-sw-protected-vm */
OBJECT_DEFINE_TYPE_WITH_INTERFACES(SwProtectedVm,
sw_protected_vm,
@@ -14,4 +14,6 @@ typedef struct SwProtectedVm {
ConfidentialGuestSupport parent_obj;
} SwProtectedVm;
+int sw_protected_vm_kvm_init(MachineState *ms, Error **errp);
+
#endif /* QEMU_I386_SW_PROTECTED_VM_H */
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com> --- target/i386/kvm/kvm.c | 2 ++ target/i386/kvm/sw-protected-vm.c | 10 ++++++++++ target/i386/kvm/sw-protected-vm.h | 2 ++ 3 files changed, 14 insertions(+)