From: Jiri Denemark Date: Thu, 4 Sep 2025 12:30:20 +0000 (+0200) Subject: qemu: Add qemuMonitorJSONCPUDataAddFeatures helper X-Git-Tag: v11.8.0-rc1~91 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1dee4afb14e7d580eacae9211cbb4dac9c02ec58;p=thirdparty%2Flibvirt.git qemu: Add qemuMonitorJSONCPUDataAddFeatures helper The function translates a list of CPU feature names retrieved from QEMU and adds them to virCPUData. Signed-off-by: Jiri Denemark Reviewed-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 7ef065ba45..732834c01f 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6703,18 +6703,12 @@ qemuMonitorJSONGetCPUProperties(qemuMonitor *mon, static int -qemuMonitorJSONGetCPUData(qemuMonitor *mon, - bool qomListGet, - const char *cpuQOMPath, - qemuMonitorCPUFeatureTranslationCallback translate, - virCPUData *data) +qemuMonitorJSONCPUDataAddFeatures(virCPUData *data, + GStrv props, + qemuMonitorCPUFeatureTranslationCallback translate) { - g_auto(GStrv) props = NULL; char **p; - if (qemuMonitorJSONGetCPUProperties(mon, qomListGet, cpuQOMPath, &props) < 0) - return -1; - for (p = props; p && *p; p++) { const char *name = *p; @@ -6729,6 +6723,25 @@ qemuMonitorJSONGetCPUData(qemuMonitor *mon, } +static int +qemuMonitorJSONGetCPUData(qemuMonitor *mon, + bool qomListGet, + const char *cpuQOMPath, + qemuMonitorCPUFeatureTranslationCallback translate, + virCPUData *data) +{ + g_auto(GStrv) props = NULL; + + if (qemuMonitorJSONGetCPUProperties(mon, qomListGet, cpuQOMPath, &props) < 0) + return -1; + + if (qemuMonitorJSONCPUDataAddFeatures(data, props, translate) < 0) + return -1; + + return 0; +} + + static int qemuMonitorJSONGetCPUDataDisabled(qemuMonitor *mon, const char *cpuQOMPath, @@ -6736,21 +6749,13 @@ qemuMonitorJSONGetCPUDataDisabled(qemuMonitor *mon, virCPUData *data) { g_auto(GStrv) props = NULL; - char **p; if (qemuMonitorJSONGetStringListProperty(mon, cpuQOMPath, "unavailable-features", &props) < 0) return -1; - for (p = props; p && *p; p++) { - const char *name = *p; - - if (translate) - name = translate(data->arch, name); - - if (virCPUDataAddFeature(data, name) < 0) - return -1; - } + if (qemuMonitorJSONCPUDataAddFeatures(data, props, translate) < 0) + return -1; return 0; }