mirror of https://gitee.com/openkylin/qemu.git
qmp: add QMP interface "query-cpu-model-baseline"
Let's provide a standardized interface to baseline two CPU models, to create a third, compatible one. This is especially helpful when two CPU models are not identical, but a CPU model is required that is guaranteed to run under both configurations, where the original models run. "query-cpu-model-baseline" takes two CPU models and returns a third, compatible model. The result will always be a static CPU model. Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Message-Id: <20160905085244.99980-28-dahi@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
0031e0d683
commit
b18b604334
|
@ -41,5 +41,8 @@ CpuModelExpansionInfo *arch_query_cpu_model_expansion(CpuModelExpansionType type
|
|||
CpuModelCompareInfo *arch_query_cpu_model_comparison(CpuModelInfo *modela,
|
||||
CpuModelInfo *modelb,
|
||||
Error **errp);
|
||||
CpuModelBaselineInfo *arch_query_cpu_model_baseline(CpuModelInfo *modela,
|
||||
CpuModelInfo *modelb,
|
||||
Error **errp);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -3244,6 +3244,57 @@
|
|||
'data': { 'modela': 'CpuModelInfo', 'modelb': 'CpuModelInfo' },
|
||||
'returns': 'CpuModelCompareInfo' }
|
||||
|
||||
##
|
||||
# @CpuModelBaselineInfo
|
||||
#
|
||||
# The result of a CPU model baseline.
|
||||
#
|
||||
# @model: the baselined CpuModelInfo.
|
||||
#
|
||||
# Since: 2.8.0
|
||||
##
|
||||
{ 'struct': 'CpuModelBaselineInfo',
|
||||
'data': { 'model': 'CpuModelInfo' } }
|
||||
|
||||
##
|
||||
# @query-cpu-model-baseline:
|
||||
#
|
||||
# Baseline two CPU models, creating a compatible third model. The created
|
||||
# model will always be a static, migration-safe CPU model (see "static"
|
||||
# CPU model expansion for details).
|
||||
#
|
||||
# This interface can be used by tooling to create a compatible CPU model out
|
||||
# two CPU models. The created CPU model will be identical to or a subset of
|
||||
# both CPU models when comparing them. Therefore, the created CPU model is
|
||||
# guaranteed to run where the given CPU models run.
|
||||
#
|
||||
# The result returned by this command may be affected by:
|
||||
#
|
||||
# * QEMU version: CPU models may look different depending on the QEMU version.
|
||||
# (Except for CPU models reported as "static" in query-cpu-definitions.)
|
||||
# * machine-type: CPU model may look different depending on the machine-type.
|
||||
# (Except for CPU models reported as "static" in query-cpu-definitions.)
|
||||
# * machine options (including accelerator): in some architectures, CPU models
|
||||
# may look different depending on machine and accelerator options. (Except for
|
||||
# CPU models reported as "static" in query-cpu-definitions.)
|
||||
# * "-cpu" arguments and global properties: arguments to the -cpu option and
|
||||
# global properties may affect expansion of CPU models. Using
|
||||
# query-cpu-model-expansion while using these is not advised.
|
||||
#
|
||||
# Some architectures may not support baselining CPU models.
|
||||
#
|
||||
# Returns: a CpuModelBaselineInfo. Returns an error if baselining CPU models is
|
||||
# not supported, if a model cannot be used, if a model contains
|
||||
# an unknown cpu definition name, unknown properties or properties
|
||||
# with wrong types.
|
||||
#
|
||||
# Since: 2.8.0
|
||||
##
|
||||
{ 'command': 'query-cpu-model-baseline',
|
||||
'data': { 'modela': 'CpuModelInfo',
|
||||
'modelb': 'CpuModelInfo' },
|
||||
'returns': 'CpuModelBaselineInfo' }
|
||||
|
||||
# @AddfdInfo:
|
||||
#
|
||||
# Information about a file descriptor that was added to an fd set.
|
||||
|
|
|
@ -3953,6 +3953,12 @@ EQMP
|
|||
.mhandler.cmd_new = qmp_marshal_query_cpu_model_comparison,
|
||||
},
|
||||
|
||||
{
|
||||
.name = "query-cpu-model-baseline",
|
||||
.args_type = "modela:q,modelb:q",
|
||||
.mhandler.cmd_new = qmp_marshal_query_cpu_model_baseline,
|
||||
},
|
||||
|
||||
{
|
||||
.name = "query-target",
|
||||
.args_type = "",
|
||||
|
|
7
qmp.c
7
qmp.c
|
@ -621,6 +621,13 @@ CpuModelCompareInfo *qmp_query_cpu_model_comparison(CpuModelInfo *modela,
|
|||
return arch_query_cpu_model_comparison(modela, modelb, errp);
|
||||
}
|
||||
|
||||
CpuModelBaselineInfo *qmp_query_cpu_model_baseline(CpuModelInfo *modela,
|
||||
CpuModelInfo *modelb,
|
||||
Error **errp)
|
||||
{
|
||||
return arch_query_cpu_model_baseline(modela, modelb, errp);
|
||||
}
|
||||
|
||||
void qmp_add_client(const char *protocol, const char *fdname,
|
||||
bool has_skipauth, bool skipauth, bool has_tls, bool tls,
|
||||
Error **errp)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
stub-obj-y += arch-query-cpu-def.o
|
||||
stub-obj-y += arch-query-cpu-model-expansion.o
|
||||
stub-obj-y += arch-query-cpu-model-comparison.o
|
||||
stub-obj-y += arch-query-cpu-model-baseline.o
|
||||
stub-obj-y += bdrv-next-monitor-owned.o
|
||||
stub-obj-y += blk-commit-all.o
|
||||
stub-obj-y += blockdev-close-all-bdrv-states.o
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qemu-common.h"
|
||||
#include "sysemu/arch_init.h"
|
||||
#include "qapi/qmp/qerror.h"
|
||||
|
||||
CpuModelBaselineInfo *arch_query_cpu_model_baseline(CpuModelInfo *modela,
|
||||
CpuModelInfo *modelb,
|
||||
Error **errp)
|
||||
{
|
||||
error_setg(errp, QERR_UNSUPPORTED);
|
||||
return NULL;
|
||||
}
|
Loading…
Reference in New Issue