if (migratable && prop->migratable == VIR_TRISTATE_BOOL_NO)
continue;
- list[n++] = g_strdup(virQEMUCapsCPUFeatureFromQEMU(qemuCaps, prop->name));
+ list[n++] = g_strdup(virQEMUCapsCPUFeatureFromQEMU(qemuCaps->arch, prop->name));
}
*features = g_steal_pointer(&list);
static const char *
-virQEMUCapsCPUFeatureTranslate(virQEMUCaps *qemuCaps,
+virQEMUCapsCPUFeatureTranslate(virArch arch,
const char *feature,
bool reversed)
{
virQEMUCapsCPUFeatureTranslationTable *table = NULL;
virQEMUCapsCPUFeatureTranslationTable *entry;
- if (ARCH_IS_X86(qemuCaps->arch))
+ if (ARCH_IS_X86(arch))
table = virQEMUCapsCPUFeaturesX86;
if (!table ||
const char *
-virQEMUCapsCPUFeatureToQEMU(virQEMUCaps *qemuCaps,
+virQEMUCapsCPUFeatureToQEMU(virArch arch,
const char *feature)
{
- return virQEMUCapsCPUFeatureTranslate(qemuCaps, feature, false);
+ return virQEMUCapsCPUFeatureTranslate(arch, feature, false);
}
const char *
-virQEMUCapsCPUFeatureFromQEMU(virQEMUCaps *qemuCaps,
+virQEMUCapsCPUFeatureFromQEMU(virArch arch,
const char *feature)
{
- return virQEMUCapsCPUFeatureTranslate(qemuCaps, feature, true);
+ return virQEMUCapsCPUFeatureTranslate(arch, feature, true);
}
for (i = 0; i < modelInfo->nprops; i++) {
virCPUFeatureDef *feature = cpu->features + cpu->nfeatures;
qemuMonitorCPUProperty *prop = modelInfo->props + i;
- const char *name = virQEMUCapsCPUFeatureFromQEMU(qemuCaps, prop->name);
+ const char *name = virQEMUCapsCPUFeatureFromQEMU(qemuCaps->arch, prop->name);
if (prop->type != QEMU_MONITOR_CPU_PROPERTY_BOOLEAN)
continue;
for (i = 0; i < model->nprops; i++) {
qemuMonitorCPUProperty *prop = model->props + i;
- const char *name = virQEMUCapsCPUFeatureFromQEMU(qemuCaps, prop->name);
+ const char *name = virQEMUCapsCPUFeatureFromQEMU(qemuCaps->arch, prop->name);
switch (prop->type) {
case QEMU_MONITOR_CPU_PROPERTY_BOOLEAN:
void *opaque);
const char *
-virQEMUCapsCPUFeatureToQEMU(virQEMUCaps *qemuCaps,
+virQEMUCapsCPUFeatureToQEMU(virArch arch,
const char *feature);
const char *
-virQEMUCapsCPUFeatureFromQEMU(virQEMUCaps *qemuCaps,
+virQEMUCapsCPUFeatureFromQEMU(virArch arch,
const char *feature);
virSEVCapability *
for (i = 0; i < cpu->nfeatures; i++) {
const char *featname =
- virQEMUCapsCPUFeatureToQEMU(qemuCaps, cpu->features[i].name);
+ virQEMUCapsCPUFeatureToQEMU(def->os.arch, cpu->features[i].name);
switch ((virCPUFeaturePolicy) cpu->features[i].policy) {
case VIR_CPU_FEATURE_FORCE:
case VIR_CPU_FEATURE_REQUIRE:
virArch arch,
const char *cpuQOMPath,
qemuMonitorCPUFeatureTranslationCallback translate,
- void *opaque,
virCPUData **enabled,
virCPUData **disabled)
{
- VIR_DEBUG("arch=%s cpuQOMPath=%s translate=%p opaque=%p enabled=%p disabled=%p",
- virArchToString(arch), cpuQOMPath, translate, opaque, enabled, disabled);
+ VIR_DEBUG("arch=%s cpuQOMPath=%s translate=%p enabled=%p disabled=%p",
+ virArchToString(arch), cpuQOMPath, translate, enabled, disabled);
QEMU_CHECK_MONITOR(mon);
if (disabled)
*disabled = NULL;
- return qemuMonitorJSONGetGuestCPU(mon, arch, cpuQOMPath, translate, opaque,
+ return qemuMonitorJSONGetGuestCPU(mon, arch, cpuQOMPath, translate,
enabled, disabled);
}
virCPUData **data,
virCPUData **disabled);
-typedef const char *(*qemuMonitorCPUFeatureTranslationCallback)(const char *name,
- void *opaque);
+typedef const char *(*qemuMonitorCPUFeatureTranslationCallback)(virArch arch,
+ const char *name);
int qemuMonitorGetGuestCPU(qemuMonitor *mon,
virArch arch,
const char *cpuQOMPath,
qemuMonitorCPUFeatureTranslationCallback translate,
- void *opaque,
virCPUData **enabled,
virCPUData **disabled);
qemuMonitorJSONGetCPUData(qemuMonitor *mon,
const char *cpuQOMPath,
qemuMonitorCPUFeatureTranslationCallback translate,
- void *opaque,
virCPUData *data)
{
qemuMonitorJSONObjectProperty prop = { .type = QEMU_MONITOR_OBJECT_PROPERTY_BOOLEAN };
continue;
if (translate)
- name = translate(name, opaque);
+ name = translate(data->arch, name);
if (virCPUDataAddFeature(data, name) < 0)
return -1;
qemuMonitorJSONGetCPUDataDisabled(qemuMonitor *mon,
const char *cpuQOMPath,
qemuMonitorCPUFeatureTranslationCallback translate,
- void *opaque,
virCPUData *data)
{
g_auto(GStrv) props = NULL;
const char *name = *p;
if (translate)
- name = translate(name, opaque);
+ name = translate(data->arch, name);
if (virCPUDataAddFeature(data, name) < 0)
return -1;
virArch arch,
const char *cpuQOMPath,
qemuMonitorCPUFeatureTranslationCallback translate,
- void *opaque,
virCPUData **enabled,
virCPUData **disabled)
{
!(cpuDisabled = virCPUDataNew(arch)))
return -1;
- if (qemuMonitorJSONGetCPUData(mon, cpuQOMPath, translate, opaque, cpuEnabled) < 0)
+ if (qemuMonitorJSONGetCPUData(mon, cpuQOMPath, translate, cpuEnabled) < 0)
return -1;
if (disabled &&
- qemuMonitorJSONGetCPUDataDisabled(mon, cpuQOMPath, translate, opaque, cpuDisabled) < 0)
+ qemuMonitorJSONGetCPUDataDisabled(mon, cpuQOMPath, translate, cpuDisabled) < 0)
return -1;
*enabled = g_steal_pointer(&cpuEnabled);
virArch arch,
const char *cpuQOMPath,
qemuMonitorCPUFeatureTranslationCallback translate,
- void *opaque,
virCPUData **enabled,
virCPUData **disabled);
}
-static const char *
-qemuProcessTranslateCPUFeatures(const char *name,
- void *opaque)
-{
- virQEMUCaps *qemuCaps = opaque;
-
- return virQEMUCapsCPUFeatureFromQEMU(qemuCaps, name);
-}
-
-
/* returns the QOM path to the first vcpu */
static const char *
qemuProcessGetVCPUQOMPath(virDomainObj *vm)
rc = qemuMonitorGetGuestCPU(priv->mon,
vm->def->os.arch,
cpuQOMPath,
- qemuProcessTranslateCPUFeatures, priv->qemuCaps,
+ virQEMUCapsCPUFeatureFromQEMU,
&dataEnabled, &dataDisabled);
} else {
rc = qemuMonitorGetGuestCPUx86(priv->mon, cpuQOMPath, &dataEnabled, &dataDisabled);