mirror of https://github.com/xemu-project/xemu.git
target/i386: introduce x86-confidential-guest
Introduce a common superclass for x86 confidential guest implementations. It will extend ConfidentialGuestSupportClass with a method that provides the VM type to be passed to KVM_CREATE_VM. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a99c0c66eb
commit
d82e9c843d
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
* QEMU Confidential Guest support
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Paolo Bonzini <pbonzini@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU GPL, version 2 or
|
||||||
|
* later. See the COPYING file in the top-level directory.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "qemu/osdep.h"
|
||||||
|
|
||||||
|
#include "confidential-guest.h"
|
||||||
|
|
||||||
|
OBJECT_DEFINE_ABSTRACT_TYPE(X86ConfidentialGuest,
|
||||||
|
x86_confidential_guest,
|
||||||
|
X86_CONFIDENTIAL_GUEST,
|
||||||
|
CONFIDENTIAL_GUEST_SUPPORT)
|
||||||
|
|
||||||
|
static void x86_confidential_guest_class_init(ObjectClass *oc, void *data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void x86_confidential_guest_init(Object *obj)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void x86_confidential_guest_finalize(Object *obj)
|
||||||
|
{
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* x86-specific confidential guest methods.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2024 Red Hat Inc.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Paolo Bonzini <pbonzini@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||||
|
* See the COPYING file in the top-level directory.
|
||||||
|
*/
|
||||||
|
#ifndef TARGET_I386_CG_H
|
||||||
|
#define TARGET_I386_CG_H
|
||||||
|
|
||||||
|
#include "qom/object.h"
|
||||||
|
|
||||||
|
#include "exec/confidential-guest-support.h"
|
||||||
|
|
||||||
|
#define TYPE_X86_CONFIDENTIAL_GUEST "x86-confidential-guest"
|
||||||
|
|
||||||
|
OBJECT_DECLARE_TYPE(X86ConfidentialGuest,
|
||||||
|
X86ConfidentialGuestClass,
|
||||||
|
X86_CONFIDENTIAL_GUEST)
|
||||||
|
|
||||||
|
struct X86ConfidentialGuest {
|
||||||
|
/* <private> */
|
||||||
|
ConfidentialGuestSupport parent_obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* X86ConfidentialGuestClass:
|
||||||
|
*
|
||||||
|
* Class to be implemented by confidential-guest-support concrete objects
|
||||||
|
* for the x86 target.
|
||||||
|
*/
|
||||||
|
struct X86ConfidentialGuestClass {
|
||||||
|
/* <private> */
|
||||||
|
ConfidentialGuestSupportClass parent;
|
||||||
|
};
|
||||||
|
#endif
|
|
@ -6,7 +6,7 @@ i386_ss.add(files(
|
||||||
'xsave_helper.c',
|
'xsave_helper.c',
|
||||||
'cpu-dump.c',
|
'cpu-dump.c',
|
||||||
))
|
))
|
||||||
i386_ss.add(when: 'CONFIG_SEV', if_true: files('host-cpu.c'))
|
i386_ss.add(when: 'CONFIG_SEV', if_true: files('host-cpu.c', 'confidential-guest.c'))
|
||||||
|
|
||||||
# x86 cpu type
|
# x86 cpu type
|
||||||
i386_ss.add(when: 'CONFIG_KVM', if_true: files('host-cpu.c'))
|
i386_ss.add(when: 'CONFIG_KVM', if_true: files('host-cpu.c'))
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#include "monitor/monitor.h"
|
#include "monitor/monitor.h"
|
||||||
#include "monitor/hmp-target.h"
|
#include "monitor/hmp-target.h"
|
||||||
#include "qapi/qapi-commands-misc-target.h"
|
#include "qapi/qapi-commands-misc-target.h"
|
||||||
#include "exec/confidential-guest-support.h"
|
#include "confidential-guest.h"
|
||||||
#include "hw/i386/pc.h"
|
#include "hw/i386/pc.h"
|
||||||
#include "exec/address-spaces.h"
|
#include "exec/address-spaces.h"
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(SevGuestState, SEV_GUEST)
|
||||||
* -machine ...,memory-encryption=sev0
|
* -machine ...,memory-encryption=sev0
|
||||||
*/
|
*/
|
||||||
struct SevGuestState {
|
struct SevGuestState {
|
||||||
ConfidentialGuestSupport parent_obj;
|
X86ConfidentialGuest parent_obj;
|
||||||
|
|
||||||
/* configuration parameters */
|
/* configuration parameters */
|
||||||
char *sev_device;
|
char *sev_device;
|
||||||
|
@ -1372,7 +1372,7 @@ sev_guest_instance_init(Object *obj)
|
||||||
|
|
||||||
/* sev guest info */
|
/* sev guest info */
|
||||||
static const TypeInfo sev_guest_info = {
|
static const TypeInfo sev_guest_info = {
|
||||||
.parent = TYPE_CONFIDENTIAL_GUEST_SUPPORT,
|
.parent = TYPE_X86_CONFIDENTIAL_GUEST,
|
||||||
.name = TYPE_SEV_GUEST,
|
.name = TYPE_SEV_GUEST,
|
||||||
.instance_size = sizeof(SevGuestState),
|
.instance_size = sizeof(SevGuestState),
|
||||||
.instance_finalize = sev_guest_finalize,
|
.instance_finalize = sev_guest_finalize,
|
||||||
|
|
Loading…
Reference in New Issue