mirror of https://github.com/xqemu/xqemu.git
Merge remote-tracking branch 'luiz/queue/qmp' into staging
# By Corey Bryant (2) and others # Via Luiz Capitulino * luiz/queue/qmp: New QMP command query-cpu-max and HMP command cpu_max qmp: fix handling of boolean values in qmp-shell QMP: TPM QMP and man page documentation updates QMP: Remove duplicate TPM type from query-tpm
This commit is contained in:
commit
2fd1a053e3
|
@ -101,7 +101,12 @@ class QMPShell(qmp.QEMUMonitorProtocol):
|
|||
try:
|
||||
value = int(opt[1])
|
||||
except ValueError:
|
||||
value = opt[1]
|
||||
if opt[1] == 'true':
|
||||
value = True
|
||||
elif opt[1] == 'false':
|
||||
value = False
|
||||
else:
|
||||
value = opt[1]
|
||||
qmpcmd['arguments'][opt[0]] = value
|
||||
return qmpcmd
|
||||
|
||||
|
|
|
@ -1643,6 +1643,8 @@ show qdev device model list
|
|||
show roms
|
||||
@item info tpm
|
||||
show the TPM device
|
||||
@item info cpu_max
|
||||
show the number of CPUs supported by the machine being emulated.
|
||||
@end table
|
||||
ETEXI
|
||||
|
||||
|
|
16
hmp.c
16
hmp.c
|
@ -631,11 +631,11 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict)
|
|||
c, TpmModel_lookup[ti->model]);
|
||||
|
||||
monitor_printf(mon, " \\ %s: type=%s",
|
||||
ti->id, TpmType_lookup[ti->type]);
|
||||
ti->id, TpmTypeOptionsKind_lookup[ti->options->kind]);
|
||||
|
||||
switch (ti->tpm_options->kind) {
|
||||
case TPM_TYPE_OPTIONS_KIND_TPM_PASSTHROUGH_OPTIONS:
|
||||
tpo = ti->tpm_options->tpm_passthrough_options;
|
||||
switch (ti->options->kind) {
|
||||
case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH:
|
||||
tpo = ti->options->passthrough;
|
||||
monitor_printf(mon, "%s%s%s%s",
|
||||
tpo->has_path ? ",path=" : "",
|
||||
tpo->has_path ? tpo->path : "",
|
||||
|
@ -748,6 +748,14 @@ void hmp_ringbuf_read(Monitor *mon, const QDict *qdict)
|
|||
g_free(data);
|
||||
}
|
||||
|
||||
void hmp_query_cpu_max(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
int cpu_max;
|
||||
|
||||
cpu_max = qmp_query_cpu_max(NULL);
|
||||
monitor_printf(mon, "Maximum number of CPUs is %d\n", cpu_max);
|
||||
}
|
||||
|
||||
static void hmp_cont_cb(void *opaque, int err)
|
||||
{
|
||||
if (!err) {
|
||||
|
|
1
hmp.h
1
hmp.h
|
@ -42,6 +42,7 @@ void hmp_stop(Monitor *mon, const QDict *qdict);
|
|||
void hmp_system_reset(Monitor *mon, const QDict *qdict);
|
||||
void hmp_system_powerdown(Monitor *mon, const QDict *qdict);
|
||||
void hmp_cpu(Monitor *mon, const QDict *qdict);
|
||||
void hmp_query_cpu_max(Monitor *mon, const QDict *qdict);
|
||||
void hmp_memsave(Monitor *mon, const QDict *qdict);
|
||||
void hmp_pmemsave(Monitor *mon, const QDict *qdict);
|
||||
void hmp_ringbuf_write(Monitor *mon, const QDict *qdict);
|
||||
|
|
|
@ -2745,6 +2745,13 @@ static mon_cmd_t info_cmds[] = {
|
|||
.help = "show the TPM device",
|
||||
.mhandler.cmd = hmp_info_tpm,
|
||||
},
|
||||
{
|
||||
.name = "cpu_max",
|
||||
.args_type = "",
|
||||
.params = "",
|
||||
.help = "Get maximum number of VCPUs supported by machine",
|
||||
.mhandler.cmd = hmp_query_cpu_max,
|
||||
},
|
||||
{
|
||||
.name = NULL,
|
||||
},
|
||||
|
|
|
@ -1831,6 +1831,17 @@
|
|||
##
|
||||
{ 'command': 'query-migrate-cache-size', 'returns': 'int' }
|
||||
|
||||
##
|
||||
## @query-cpu-max
|
||||
##
|
||||
## query maximum number of CPUs supported by machine
|
||||
##
|
||||
## Returns: number of CPUs
|
||||
##
|
||||
## Since: 1.5
|
||||
###
|
||||
{ 'command': 'query-cpu-max', 'returns': 'int' }
|
||||
|
||||
##
|
||||
# @ObjectPropertyInfo:
|
||||
#
|
||||
|
@ -3403,13 +3414,12 @@
|
|||
#
|
||||
# A union referencing different TPM backend types' configuration options
|
||||
#
|
||||
# @tpm-passthough-options: TPMPassthroughOptions describing the TPM
|
||||
# passthrough configuration options
|
||||
# @passthrough: The configuration options for the TPM passthrough type
|
||||
#
|
||||
# Since: 1.5
|
||||
##
|
||||
{ 'union': 'TpmTypeOptions',
|
||||
'data': { 'tpm-passthrough-options' : 'TPMPassthroughOptions' } }
|
||||
'data': { 'passthrough' : 'TPMPassthroughOptions' } }
|
||||
|
||||
##
|
||||
# @TpmInfo:
|
||||
|
@ -3420,17 +3430,14 @@
|
|||
#
|
||||
# @model: The TPM frontend model
|
||||
#
|
||||
# @type: The TPM (backend) type being used
|
||||
#
|
||||
# @tpm-options: The TPM (backend) type configuration options
|
||||
# @options: The TPM (backend) type configuration options
|
||||
#
|
||||
# Since: 1.5
|
||||
##
|
||||
{ 'type': 'TPMInfo',
|
||||
'data': {'id': 'str',
|
||||
'model': 'TpmModel',
|
||||
'type': 'TpmType',
|
||||
'tpm-options': 'TpmTypeOptions' } }
|
||||
'options': 'TpmTypeOptions' } }
|
||||
|
||||
##
|
||||
# @query-tpm:
|
||||
|
|
|
@ -2241,7 +2241,8 @@ Backend type must be:
|
|||
@option{passthrough}.
|
||||
|
||||
The specific backend type will determine the applicable options.
|
||||
The @code{-tpmdev} option requires a @code{-device} option.
|
||||
The @code{-tpmdev} option creates the TPM backend and requires a
|
||||
@code{-device} option that specifies the TPM frontend interface model.
|
||||
|
||||
Options to each backend are described below.
|
||||
|
||||
|
|
|
@ -382,6 +382,28 @@ Example:
|
|||
|
||||
Note: CPUs' indexes are obtained with the 'query-cpus' command.
|
||||
|
||||
EQMP
|
||||
|
||||
{
|
||||
.name = "query-cpu-max",
|
||||
.args_type = "",
|
||||
.mhandler.cmd_new = qmp_marshal_input_query_cpu_max,
|
||||
},
|
||||
|
||||
SQMP
|
||||
query-cpu-max
|
||||
-------------
|
||||
|
||||
Get the maximum CPUs supported by the machine being currently
|
||||
emulated.
|
||||
|
||||
Returns json-int.
|
||||
|
||||
Example:
|
||||
|
||||
-> { "execute": "query-cpu-max" }
|
||||
<- { "return": 255 }
|
||||
|
||||
EQMP
|
||||
|
||||
{
|
||||
|
@ -2721,18 +2743,76 @@ EQMP
|
|||
.mhandler.cmd_new = qmp_marshal_input_query_tpm,
|
||||
},
|
||||
|
||||
SQMP
|
||||
query-tpm
|
||||
---------
|
||||
|
||||
Return information about the TPM device.
|
||||
|
||||
Arguments: None
|
||||
|
||||
Example:
|
||||
|
||||
-> { "execute": "query-tpm" }
|
||||
<- { "return":
|
||||
[
|
||||
{ "model": "tpm-tis",
|
||||
"options":
|
||||
{ "type": "passthrough",
|
||||
"data":
|
||||
{ "cancel-path": "/sys/class/misc/tpm0/device/cancel",
|
||||
"path": "/dev/tpm0"
|
||||
}
|
||||
},
|
||||
"id": "tpm0"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
EQMP
|
||||
|
||||
{
|
||||
.name = "query-tpm-models",
|
||||
.args_type = "",
|
||||
.mhandler.cmd_new = qmp_marshal_input_query_tpm_models,
|
||||
},
|
||||
|
||||
SQMP
|
||||
query-tpm-models
|
||||
----------------
|
||||
|
||||
Return a list of supported TPM models.
|
||||
|
||||
Arguments: None
|
||||
|
||||
Example:
|
||||
|
||||
-> { "execute": "query-tpm-models" }
|
||||
<- { "return": [ "tpm-tis" ] }
|
||||
|
||||
EQMP
|
||||
|
||||
{
|
||||
.name = "query-tpm-types",
|
||||
.args_type = "",
|
||||
.mhandler.cmd_new = qmp_marshal_input_query_tpm_types,
|
||||
},
|
||||
|
||||
SQMP
|
||||
query-tpm-types
|
||||
---------------
|
||||
|
||||
Return a list of supported TPM types.
|
||||
|
||||
Arguments: None
|
||||
|
||||
Example:
|
||||
|
||||
-> { "execute": "query-tpm-types" }
|
||||
<- { "return": [ "passthrough" ] }
|
||||
|
||||
EQMP
|
||||
|
||||
{
|
||||
.name = "chardev-add",
|
||||
.args_type = "id:s,backend:q",
|
||||
|
|
|
@ -257,14 +257,13 @@ static TPMInfo *qmp_query_tpm_inst(TPMBackend *drv)
|
|||
|
||||
res->id = g_strdup(drv->id);
|
||||
res->model = drv->fe_model;
|
||||
res->type = drv->ops->type;
|
||||
res->tpm_options = g_new0(TpmTypeOptions, 1);
|
||||
res->options = g_new0(TpmTypeOptions, 1);
|
||||
|
||||
switch (res->type) {
|
||||
switch (drv->ops->type) {
|
||||
case TPM_TYPE_PASSTHROUGH:
|
||||
res->tpm_options->kind = TPM_TYPE_OPTIONS_KIND_TPM_PASSTHROUGH_OPTIONS;
|
||||
res->options->kind = TPM_TYPE_OPTIONS_KIND_PASSTHROUGH;
|
||||
tpo = g_new0(TPMPassthroughOptions, 1);
|
||||
res->tpm_options->tpm_passthrough_options = tpo;
|
||||
res->options->passthrough = tpo;
|
||||
if (drv->path) {
|
||||
tpo->path = g_strdup(drv->path);
|
||||
tpo->has_path = true;
|
||||
|
|
Loading…
Reference in New Issue