From 02e5cb0d1ab02f65dd1bc913c50be974cb5d3f8f Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Thu, 26 Sep 2019 15:22:38 +0200 Subject: [PATCH] qemu: Introduce virQEMUCapsGetMachineDefaultCPU MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jiri Denemark Reviewed-by: Ján Tomko --- src/qemu/qemu_capabilities.c | 32 ++++++++++++++++++++++++++++++++ src/qemu/qemu_capabilities.h | 3 +++ 2 files changed, 35 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e47eecf028..0a406972e7 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -2194,6 +2194,38 @@ virQEMUCapsGetMachineHotplugCpus(virQEMUCapsPtr qemuCaps, } +const char * +virQEMUCapsGetMachineDefaultCPU(virQEMUCapsPtr qemuCaps, + const char *name, + virDomainVirtType type) +{ + virQEMUCapsAccelPtr accel = virQEMUCapsGetAccel(qemuCaps, type); + qemuMonitorCPUDefsPtr defs = accel->cpuModels; + const char *cpuType = NULL; + size_t i; + + if (!name || !defs) + return NULL; + + for (i = 0; i < accel->nmachineTypes; i++) { + if (STREQ(accel->machineTypes[i].name, name)) { + cpuType = accel->machineTypes[i].defaultCPU; + break; + } + } + + if (!cpuType) + return NULL; + + for (i = 0; i < defs->ncpus; i++) { + if (STREQ_NULLABLE(defs->cpus[i].type, cpuType)) + return defs->cpus[i].name; + } + + return NULL; +} + + /** * virQEMUCapsSetGICCapabilities: * @qemuCaps: QEMU capabilities diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 73f8f827cb..23185341d3 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -612,6 +612,9 @@ int virQEMUCapsGetMachineMaxCpus(virQEMUCapsPtr qemuCaps, bool virQEMUCapsGetMachineHotplugCpus(virQEMUCapsPtr qemuCaps, virDomainVirtType virtType, const char *name); +const char *virQEMUCapsGetMachineDefaultCPU(virQEMUCapsPtr qemuCaps, + const char *name, + virDomainVirtType type); void virQEMUCapsFilterByMachineType(virQEMUCapsPtr qemuCaps, virDomainVirtType virtType,