mirror of
https://github.com/qemu/qemu.git
synced 2024-11-23 19:03:38 +08:00
Move TPM passthrough specific command line options to backend structure
Move the TPM passthrough specific command line options to the passthrough backend implementation and attach them to the backend's interface structure. Add code to tpm.c for validating the TPM command line options. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Reviewed-by: Corey Bryan <coreyb@linux.vnet.ibm.com> Message-id: 1366641699-21420-1-git-send-email-stefanb@linux.vnet.ibm.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
13daf6cad0
commit
bb71623811
@ -33,6 +33,13 @@ struct TPMState {
|
||||
|
||||
#define TPM(obj) OBJECT_CHECK(TPMState, (obj), TYPE_TPM_TIS)
|
||||
|
||||
#define TPM_STANDARD_CMDLINE_OPTS \
|
||||
{ \
|
||||
.name = "type", \
|
||||
.type = QEMU_OPT_STRING, \
|
||||
.help = "Type of TPM backend", \
|
||||
}
|
||||
|
||||
struct tpm_req_hdr {
|
||||
uint16_t tag;
|
||||
uint32_t len;
|
||||
|
@ -488,8 +488,24 @@ static void tpm_passthrough_destroy(TPMBackend *tb)
|
||||
g_free(tpm_pt->tpm_dev);
|
||||
}
|
||||
|
||||
static const QemuOptDesc tpm_passthrough_cmdline_opts[] = {
|
||||
TPM_STANDARD_CMDLINE_OPTS,
|
||||
{
|
||||
.name = "cancel-path",
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "Sysfs file entry for canceling TPM commands",
|
||||
},
|
||||
{
|
||||
.name = "path",
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "Path to TPM device on the host",
|
||||
},
|
||||
{ /* end of list */ },
|
||||
};
|
||||
|
||||
static const TPMDriverOps tpm_passthrough_driver = {
|
||||
.type = TPM_TYPE_PASSTHROUGH,
|
||||
.opts = tpm_passthrough_cmdline_opts,
|
||||
.desc = tpm_passthrough_create_desc,
|
||||
.create = tpm_passthrough_create,
|
||||
.destroy = tpm_passthrough_destroy,
|
||||
|
@ -65,6 +65,7 @@ typedef struct TPMSizedBuffer {
|
||||
|
||||
struct TPMDriverOps {
|
||||
enum TpmType type;
|
||||
const QemuOptDesc *opts;
|
||||
/* get a descriptive text of the backend to display to the user */
|
||||
const char *(*desc)(void);
|
||||
|
||||
|
8
tpm.c
8
tpm.c
@ -159,6 +159,14 @@ static int configure_tpm(QemuOpts *opts)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* validate backend specific opts */
|
||||
qemu_opts_validate(opts, be->opts, &local_err);
|
||||
if (error_is_set(&local_err)) {
|
||||
qerror_report_err(local_err);
|
||||
error_free(local_err);
|
||||
return 1;
|
||||
}
|
||||
|
||||
drv = be->create(opts, id);
|
||||
if (!drv) {
|
||||
return 1;
|
||||
|
16
vl.c
16
vl.c
@ -502,21 +502,7 @@ static QemuOptsList qemu_tpmdev_opts = {
|
||||
.implied_opt_name = "type",
|
||||
.head = QTAILQ_HEAD_INITIALIZER(qemu_tpmdev_opts.head),
|
||||
.desc = {
|
||||
{
|
||||
.name = "type",
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "Type of TPM backend",
|
||||
},
|
||||
{
|
||||
.name = "cancel-path",
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "Sysfs file entry for canceling TPM commands",
|
||||
},
|
||||
{
|
||||
.name = "path",
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "Path to TPM device on the host",
|
||||
},
|
||||
/* options are defined in the TPM backends */
|
||||
{ /* end of list */ }
|
||||
},
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user