/**
- * cpuHasFeature:
+ * virCPUDataCheckFeature:
*
* @data: internal CPU representation
* @feature: feature to be checked for
* -1 on error.
*/
int
-cpuHasFeature(const virCPUData *data,
- const char *feature)
+virCPUDataCheckFeature(const virCPUData *data,
+ const char *feature)
{
struct cpuArchDriver *driver;
if ((driver = cpuGetSubDriver(data->arch)) == NULL)
return -1;
- if (driver->hasFeature == NULL) {
+ if (!driver->dataCheckFeature) {
virReportError(VIR_ERR_NO_SUPPORT,
_("cannot check guest CPU data for %s architecture"),
virArchToString(data->arch));
return -1;
}
- return driver->hasFeature(data, feature);
+ return driver->dataCheckFeature(data, feature);
}
const virCPUDef *host);
typedef int
-(*cpuArchHasFeature) (const virCPUData *data,
- const char *feature);
+(*virCPUArchDataCheckFeature)(const virCPUData *data,
+ const char *feature);
typedef char *
(*cpuArchDataFormat)(const virCPUData *data);
cpuArchGuestData guestData;
cpuArchBaseline baseline;
virCPUArchUpdate update;
- cpuArchHasFeature hasFeature;
+ virCPUArchDataCheckFeature dataCheckFeature;
cpuArchDataFormat dataFormat;
cpuArchDataParse dataParse;
cpuArchGetModels getModels;
ATTRIBUTE_NONNULL(2);
int
-cpuHasFeature(const virCPUData *data,
- const char *feature)
+virCPUDataCheckFeature(const virCPUData *data,
+ const char *feature)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
.guestData = armGuestData,
.baseline = armBaseline,
.update = virCPUarmUpdate,
- .hasFeature = NULL,
};
.guestData = ppc64DriverGuestData,
.baseline = ppc64DriverBaseline,
.update = virCPUppc64Update,
- .hasFeature = NULL,
.getModels = ppc64DriverGetModels,
};
.guestData = NULL,
.baseline = NULL,
.update = NULL,
- .hasFeature = NULL,
};
static int
-x86HasFeature(const virCPUData *data,
- const char *name)
+virCPUx86DataCheckFeature(const virCPUData *data,
+ const char *name)
{
virCPUx86MapPtr map;
.guestData = x86GuestData,
.baseline = x86Baseline,
.update = virCPUx86Update,
- .hasFeature = x86HasFeature,
+ .dataCheckFeature = virCPUx86DataCheckFeature,
.dataFormat = x86CPUDataFormat,
.dataParse = x86CPUDataParse,
.getModels = x86GetModels,
cpuEncode;
cpuGetModels;
cpuGuestData;
-cpuHasFeature;
cpuNodeData;
+virCPUDataCheckFeature;
virCPUTranslate;
virCPUUpdate;
*/
if ((def->os.arch == VIR_ARCH_X86_64 || def->os.arch == VIR_ARCH_I686) &&
compareAgainstHost) {
- int hasSVM = cpuHasFeature(data, "svm");
+ int hasSVM = virCPUDataCheckFeature(data, "svm");
if (hasSVM < 0)
goto cleanup;
*hasHwVirt = hasSVM > 0 ? true : false;
NULL, NULL, NULL, NULL) < 0)
goto cleanup;
- is_32bit = (cpuHasFeature(cpuData, "lm") != 1);
+ is_32bit = (virCPUDataCheckFeature(cpuData, "lm") != 1);
cpuDataFree(cpuData);
} else if (model) {
is_32bit = STREQ(model, "qemu32");
}
if (def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK] == VIR_TRISTATE_SWITCH_ON) {
- if (!cpuHasFeature(guestcpu, VIR_CPU_x86_KVM_PV_UNHALT)) {
+ if (!virCPUDataCheckFeature(guestcpu, VIR_CPU_x86_KVM_PV_UNHALT)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("host doesn't support paravirtual spinlocks"));
goto cleanup;
if (virAsprintf(&cpuFeature, "__kvm_hv_%s",
virDomainHypervTypeToString(i)) < 0)
goto cleanup;
- if (!cpuHasFeature(guestcpu, cpuFeature)) {
+ if (!virCPUDataCheckFeature(guestcpu, cpuFeature)) {
switch ((virDomainHyperv) i) {
case VIR_DOMAIN_HYPERV_RELAXED:
case VIR_DOMAIN_HYPERV_VAPIC:
continue;
if (STREQ(feature->name, "invtsc") &&
- !cpuHasFeature(guestcpu, feature->name)) {
+ !virCPUDataCheckFeature(guestcpu, feature->name)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("host doesn't support invariant TSC"));
goto cleanup;
case VIR_CPU_COMPARE_INCOMPATIBLE:
if (cpuEncode(host->arch, host, NULL, &hostData,
NULL, NULL, NULL, NULL) == 0 &&
- (!cpuHasFeature(hostData, "hle") ||
- !cpuHasFeature(hostData, "rtm")) &&
+ (!virCPUDataCheckFeature(hostData, "hle") ||
+ !virCPUDataCheckFeature(hostData, "rtm")) &&
(STREQ_NULLABLE(cpu->model, "Haswell") ||
STREQ_NULLABLE(cpu->model, "Broadwell")))
noTSX = true;
* - Host CPU is x86_64 with virtualization extensions
*/
if (caps->host.arch == VIR_ARCH_X86_64 ||
- (cpuHasFeature(data, "lm") &&
- (cpuHasFeature(data, "vmx") ||
- cpuHasFeature(data, "svm")))) {
+ (virCPUDataCheckFeature(data, "lm") &&
+ (virCPUDataCheckFeature(data, "vmx") ||
+ virCPUDataCheckFeature(data, "svm")))) {
if ((guest = virCapabilitiesAddGuest(caps,
VIR_DOMAIN_OSTYPE_HVM,
NULL, NULL, NULL, NULL) < 0)
goto cleanup;
- result = cpuHasFeature(hostData, data->name);
+ result = virCPUDataCheckFeature(hostData, data->name);
if (data->result == -1)
virResetLastError();