From: Marc-André Lureau Date: Mon, 9 Oct 2017 22:56:01 +0000 (+0200) Subject: tpm: add a QOM TPM interface X-Git-Tag: v2.11.0-rc0~36^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=698f5daa4a81984490612a6143b46f5da7392510;p=thirdparty%2Fqemu.git tpm: add a QOM TPM interface This will simplify backend / interface objects relationship, so the frontend interface will simply have to implement the TPM QOM interface. Signed-off-by: Marc-André Lureau Reviewed-by: Stefan Berger Signed-off-by: Stefan Berger --- diff --git a/backends/tpm.c b/backends/tpm.c index dc7c831ff8a..87c5c091797 100644 --- a/backends/tpm.c +++ b/backends/tpm.c @@ -17,6 +17,7 @@ #include "qapi/error.h" #include "qapi/qmp/qerror.h" #include "sysemu/tpm.h" +#include "hw/tpm/tpm_int.h" #include "qemu/thread.h" static void tpm_backend_worker_thread(gpointer data, gpointer user_data) @@ -209,9 +210,16 @@ static const TypeInfo tpm_backend_info = { .abstract = true, }; +static const TypeInfo tpm_if_info = { + .name = TYPE_TPM_IF, + .parent = TYPE_INTERFACE, + .class_size = sizeof(TPMIfClass), +}; + static void register_types(void) { type_register_static(&tpm_backend_info); + type_register_static(&tpm_if_info); } type_init(register_types); diff --git a/hw/tpm/tpm_int.h b/hw/tpm/tpm_int.h index e231d0eb4f0..eb02e7760c3 100644 --- a/hw/tpm/tpm_int.h +++ b/hw/tpm/tpm_int.h @@ -13,6 +13,23 @@ #define TPM_TPM_INT_H #include "qemu/osdep.h" +#include "qom/object.h" + +#define TYPE_TPM_IF "tpm-if" +#define TPM_IF_CLASS(klass) \ + OBJECT_CLASS_CHECK(TPMIfClass, (klass), TYPE_TPM_IF) +#define TPM_IF_GET_CLASS(obj) \ + OBJECT_GET_CLASS(TPMIfClass, (obj), TYPE_TPM_IF) +#define TPM_IF(obj) \ + INTERFACE_CHECK(TPMIf, (obj), TYPE_TPM_IF) + +typedef struct TPMIf { + Object parent_obj; +} TPMIf; + +typedef struct TPMIfClass { + InterfaceClass parent_class; +} TPMIfClass; #define TPM_STANDARD_CMDLINE_OPTS \ { \ diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c index d84eec48b4a..dbb50043acc 100644 --- a/hw/tpm/tpm_tis.c +++ b/hw/tpm/tpm_tis.c @@ -1123,6 +1123,10 @@ static const TypeInfo tpm_tis_info = { .instance_size = sizeof(TPMState), .instance_init = tpm_tis_initfn, .class_init = tpm_tis_class_init, + .interfaces = (InterfaceInfo[]) { + { TYPE_TPM_IF }, + { } + } }; static void tpm_tis_register(void)