[PATCH v2 4/5] qemu: check if cpu model is supported before baselining
Jiri Denemark
jdenemar at redhat.com
Tue Nov 24 19:59:42 UTC 2020
On Thu, Sep 24, 2020 at 20:22:38 -0400, Collin Walling wrote:
> Check the provided CPU models against the CPU models
> known by the hypervisor before baselining and print
> an error if an unrecognized model is found.
>
> Signed-off-by: Collin Walling <walling at linux.ibm.com>
> ---
> src/qemu/qemu_driver.c | 18 +++++++++++++++---
> 1 file changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 1c5b1dcfee..fe572b13e1 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -12453,12 +12453,13 @@ qemuConnectCPUModelBaseline(virQEMUCapsPtr qemuCaps,
> gid_t runGid,
> bool expand_features,
> virCPUDefPtr *cpus,
> - int ncpus)
> + int ncpus,
> + virDomainCapsCPUModelsPtr cpuModels)
> {
> g_autoptr(qemuProcessQMP) proc = NULL;
> g_autoptr(virCPUDef) baseline = NULL;
> qemuMonitorCPUModelInfoPtr result = NULL;
> - size_t i;
> + size_t i, j;
>
> for (i = 0; i < ncpus; i++) {
> if (!cpus[i]) {
> @@ -12471,6 +12472,16 @@ qemuConnectCPUModelBaseline(virQEMUCapsPtr qemuCaps,
> _("no CPU model specified at index %zu"), i);
> return NULL;
> }
> + for (j = 0; j < cpuModels->nmodels; j++) {
> + if (STREQ(cpus[i]->model, cpuModels->models[j].name))
> + break;
> + }
> + if (j == cpuModels->nmodels) {
You can use an existing internal API instead:
if (!virDomainCapsCPUModelsGet(cpuModels, cpus[i]->model)) {
> + virReportError(VIR_ERR_INVALID_ARG,
> + _("CPU model '%s' not supported by hypervisor"),
> + cpus[i]->model);
> + return NULL;
> + }
> }
>
> if (!(proc = qemuProcessQMPNew(virQEMUCapsGetBinary(qemuCaps),
Jirka
More information about the libvir-list
mailing list