target/i386: sev: Rename QSevGuestInfo

At the moment this is a purely passive object which is just a container for
information used elsewhere, hence the name.  I'm going to change that
though, so as a preliminary rename it to SevGuestState.

That name risks confusion with both SEVState and SevState, but I'll be
working on that in following patches.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20200604064219.436242-4-david@gibson.dropbear.id.au>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
David Gibson 2020-06-04 16:42:13 +10:00 committed by Paolo Bonzini
parent a86ab19d4a
commit d2d8a1984d
1 changed files with 44 additions and 43 deletions

View File

@ -29,22 +29,23 @@
#include "trace.h" #include "trace.h"
#include "migration/blocker.h" #include "migration/blocker.h"
#define TYPE_QSEV_GUEST_INFO "sev-guest" #define TYPE_SEV_GUEST "sev-guest"
#define QSEV_GUEST_INFO(obj) \ #define SEV_GUEST(obj) \
OBJECT_CHECK(QSevGuestInfo, (obj), TYPE_QSEV_GUEST_INFO) OBJECT_CHECK(SevGuestState, (obj), TYPE_SEV_GUEST)
typedef struct QSevGuestInfo QSevGuestInfo; typedef struct SevGuestState SevGuestState;
/** /**
* QSevGuestInfo: * SevGuestState:
* *
* The QSevGuestInfo object is used for creating a SEV guest. * The SevGuestState object is used for creating and managing a SEV
* guest.
* *
* # $QEMU \ * # $QEMU \
* -object sev-guest,id=sev0 \ * -object sev-guest,id=sev0 \
* -machine ...,memory-encryption=sev0 * -machine ...,memory-encryption=sev0
*/ */
struct QSevGuestInfo { struct SevGuestState {
Object parent_obj; Object parent_obj;
char *sev_device; char *sev_device;
@ -57,7 +58,7 @@ struct QSevGuestInfo {
}; };
struct SEVState { struct SEVState {
QSevGuestInfo *sev_info; SevGuestState *sev_info;
uint8_t api_major; uint8_t api_major;
uint8_t api_minor; uint8_t api_minor;
uint8_t build_id; uint8_t build_id;
@ -235,82 +236,82 @@ static struct RAMBlockNotifier sev_ram_notifier = {
}; };
static void static void
qsev_guest_finalize(Object *obj) sev_guest_finalize(Object *obj)
{ {
} }
static char * static char *
qsev_guest_get_session_file(Object *obj, Error **errp) sev_guest_get_session_file(Object *obj, Error **errp)
{ {
QSevGuestInfo *s = QSEV_GUEST_INFO(obj); SevGuestState *s = SEV_GUEST(obj);
return s->session_file ? g_strdup(s->session_file) : NULL; return s->session_file ? g_strdup(s->session_file) : NULL;
} }
static void static void
qsev_guest_set_session_file(Object *obj, const char *value, Error **errp) sev_guest_set_session_file(Object *obj, const char *value, Error **errp)
{ {
QSevGuestInfo *s = QSEV_GUEST_INFO(obj); SevGuestState *s = SEV_GUEST(obj);
s->session_file = g_strdup(value); s->session_file = g_strdup(value);
} }
static char * static char *
qsev_guest_get_dh_cert_file(Object *obj, Error **errp) sev_guest_get_dh_cert_file(Object *obj, Error **errp)
{ {
QSevGuestInfo *s = QSEV_GUEST_INFO(obj); SevGuestState *s = SEV_GUEST(obj);
return g_strdup(s->dh_cert_file); return g_strdup(s->dh_cert_file);
} }
static void static void
qsev_guest_set_dh_cert_file(Object *obj, const char *value, Error **errp) sev_guest_set_dh_cert_file(Object *obj, const char *value, Error **errp)
{ {
QSevGuestInfo *s = QSEV_GUEST_INFO(obj); SevGuestState *s = SEV_GUEST(obj);
s->dh_cert_file = g_strdup(value); s->dh_cert_file = g_strdup(value);
} }
static char * static char *
qsev_guest_get_sev_device(Object *obj, Error **errp) sev_guest_get_sev_device(Object *obj, Error **errp)
{ {
QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); SevGuestState *sev = SEV_GUEST(obj);
return g_strdup(sev->sev_device); return g_strdup(sev->sev_device);
} }
static void static void
qsev_guest_set_sev_device(Object *obj, const char *value, Error **errp) sev_guest_set_sev_device(Object *obj, const char *value, Error **errp)
{ {
QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); SevGuestState *sev = SEV_GUEST(obj);
sev->sev_device = g_strdup(value); sev->sev_device = g_strdup(value);
} }
static void static void
qsev_guest_class_init(ObjectClass *oc, void *data) sev_guest_class_init(ObjectClass *oc, void *data)
{ {
object_class_property_add_str(oc, "sev-device", object_class_property_add_str(oc, "sev-device",
qsev_guest_get_sev_device, sev_guest_get_sev_device,
qsev_guest_set_sev_device); sev_guest_set_sev_device);
object_class_property_set_description(oc, "sev-device", object_class_property_set_description(oc, "sev-device",
"SEV device to use"); "SEV device to use");
object_class_property_add_str(oc, "dh-cert-file", object_class_property_add_str(oc, "dh-cert-file",
qsev_guest_get_dh_cert_file, sev_guest_get_dh_cert_file,
qsev_guest_set_dh_cert_file); sev_guest_set_dh_cert_file);
object_class_property_set_description(oc, "dh-cert-file", object_class_property_set_description(oc, "dh-cert-file",
"guest owners DH certificate (encoded with base64)"); "guest owners DH certificate (encoded with base64)");
object_class_property_add_str(oc, "session-file", object_class_property_add_str(oc, "session-file",
qsev_guest_get_session_file, sev_guest_get_session_file,
qsev_guest_set_session_file); sev_guest_set_session_file);
object_class_property_set_description(oc, "session-file", object_class_property_set_description(oc, "session-file",
"guest owners session parameters (encoded with base64)"); "guest owners session parameters (encoded with base64)");
} }
static void static void
qsev_guest_init(Object *obj) sev_guest_instance_init(Object *obj)
{ {
QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); SevGuestState *sev = SEV_GUEST(obj);
sev->sev_device = g_strdup(DEFAULT_SEV_DEVICE); sev->sev_device = g_strdup(DEFAULT_SEV_DEVICE);
sev->policy = DEFAULT_GUEST_POLICY; sev->policy = DEFAULT_GUEST_POLICY;
@ -326,32 +327,32 @@ qsev_guest_init(Object *obj)
} }
/* sev guest info */ /* sev guest info */
static const TypeInfo qsev_guest_info = { static const TypeInfo sev_guest_info = {
.parent = TYPE_OBJECT, .parent = TYPE_OBJECT,
.name = TYPE_QSEV_GUEST_INFO, .name = TYPE_SEV_GUEST,
.instance_size = sizeof(QSevGuestInfo), .instance_size = sizeof(SevGuestState),
.instance_finalize = qsev_guest_finalize, .instance_finalize = sev_guest_finalize,
.class_init = qsev_guest_class_init, .class_init = sev_guest_class_init,
.instance_init = qsev_guest_init, .instance_init = sev_guest_instance_init,
.interfaces = (InterfaceInfo[]) { .interfaces = (InterfaceInfo[]) {
{ TYPE_USER_CREATABLE }, { TYPE_USER_CREATABLE },
{ } { }
} }
}; };
static QSevGuestInfo * static SevGuestState *
lookup_sev_guest_info(const char *id) lookup_sev_guest_info(const char *id)
{ {
Object *obj; Object *obj;
QSevGuestInfo *info; SevGuestState *info;
obj = object_resolve_path_component(object_get_objects_root(), id); obj = object_resolve_path_component(object_get_objects_root(), id);
if (!obj) { if (!obj) {
return NULL; return NULL;
} }
info = (QSevGuestInfo *) info = (SevGuestState *)
object_dynamic_cast(obj, TYPE_QSEV_GUEST_INFO); object_dynamic_cast(obj, TYPE_SEV_GUEST);
if (!info) { if (!info) {
return NULL; return NULL;
} }
@ -510,7 +511,7 @@ sev_launch_start(SEVState *s)
gsize sz; gsize sz;
int ret = 1; int ret = 1;
int fw_error, rc; int fw_error, rc;
QSevGuestInfo *sev = s->sev_info; SevGuestState *sev = s->sev_info;
struct kvm_sev_launch_start *start; struct kvm_sev_launch_start *start;
guchar *session = NULL, *dh_cert = NULL; guchar *session = NULL, *dh_cert = NULL;
@ -696,7 +697,7 @@ sev_guest_init(const char *id)
s->sev_info = lookup_sev_guest_info(id); s->sev_info = lookup_sev_guest_info(id);
if (!s->sev_info) { if (!s->sev_info) {
error_report("%s: '%s' is not a valid '%s' object", error_report("%s: '%s' is not a valid '%s' object",
__func__, id, TYPE_QSEV_GUEST_INFO); __func__, id, TYPE_SEV_GUEST);
goto err; goto err;
} }
@ -786,7 +787,7 @@ sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len)
static void static void
sev_register_types(void) sev_register_types(void)
{ {
type_register_static(&qsev_guest_info); type_register_static(&sev_guest_info);
} }
type_init(sev_register_types); type_init(sev_register_types);