VIR_LOG_INIT("bhyve.bhyve_capabilities");
-static int
-virBhyveCapsInitCPU(virCapsPtr caps,
- virArch arch)
-{
- virNodeInfo nodeinfo;
-
- if (nodeGetInfo(&nodeinfo))
- return -1;
-
- if (!(caps->host.cpu = virCPUGetHost(arch, VIR_CPU_TYPE_HOST,
- &nodeinfo, NULL, 0)))
- return -1;
-
- return 0;
-}
virCapsPtr
virBhyveCapsBuild(void)
NULL, NULL, 0, NULL) == NULL)
goto error;
- if (virBhyveCapsInitCPU(caps, virArchFromHost()) < 0)
- VIR_WARN("Failed to get host CPU: %s", virGetLastErrorMessage());
+ if (!(caps->host.cpu = virCPUProbeHost(caps->host.arch)))
+ VIR_WARN("Failed to get host CPU");
return caps;
#include "virlog.h"
#include "viralloc.h"
#include "virxml.h"
+#include "nodeinfo.h"
#include "cpu.h"
#include "cpu_map.h"
#include "cpu_x86.h"
}
+virCPUDefPtr
+virCPUProbeHost(virArch arch)
+{
+ virNodeInfo nodeinfo;
+
+ if (nodeGetInfo(&nodeinfo))
+ return NULL;
+
+ return virCPUGetHost(arch, VIR_CPU_TYPE_HOST, &nodeinfo, NULL, 0);
+}
+
+
/**
* cpuBaselineXML:
*
const char **models,
unsigned int nmodels);
+virCPUDefPtr
+virCPUProbeHost(virArch arch);
+
char *
cpuBaselineXML(const char **xmlCPUs,
unsigned int ncpus,
virCPUDataParse;
virCPUGetHost;
virCPUGetModels;
+virCPUProbeHost;
virCPUTranslate;
virCPUUpdate;
virCPUUpdateLive;
}
-static virCPUDefPtr
-virQEMUCapsProbeHostCPU(virCapsPtr caps)
-{
- virNodeInfo nodeinfo;
-
- if (nodeGetInfo(&nodeinfo))
- return NULL;
-
- return virCPUGetHost(caps->host.arch, VIR_CPU_TYPE_HOST,
- &nodeinfo, NULL, 0);
-}
-
-
virCPUDefPtr
virQEMUCapsProbeHostCPUForEmulator(virCapsPtr caps,
virQEMUCapsPtr qemuCaps,
VIR_WARN("Failed to query host NUMA topology, disabling NUMA capabilities");
}
- if (!(caps->host.cpu = virQEMUCapsProbeHostCPU(caps)))
+ if (!(caps->host.cpu = virCPUProbeHost(caps->host.arch)))
VIR_WARN("Failed to get host CPU");
/* Add the power management features of the host */
{
virCapsPtr caps = NULL;
virCapsGuestPtr guest = NULL;
- virCPUDefPtr cpu = NULL;
if ((caps = virCapabilitiesNew(virArchFromHost(),
false, false)) == NULL)
VIR_DOMAIN_VIRT_VMWARE,
NULL, NULL, 0, NULL) == NULL)
goto error;
+ guest = NULL;
- if (!(cpu = virCPUGetHost(caps->host.arch, VIR_CPU_TYPE_HOST,
- NULL, NULL, 0)))
+ if (!(caps->host.cpu = virCPUProbeHost(caps->host.arch)))
goto error;
/* x86_64 guests are supported if
* - Host CPU is x86_64 with virtualization extensions
*/
if (caps->host.arch == VIR_ARCH_X86_64 ||
- (virCPUCheckFeature(cpu->arch, cpu, "lm") &&
- (virCPUCheckFeature(cpu->arch, cpu, "vmx") ||
- virCPUCheckFeature(cpu->arch, cpu, "svm")))) {
+ (virCPUCheckFeature(caps->host.cpu->arch, caps->host.cpu, "lm") &&
+ (virCPUCheckFeature(caps->host.cpu->arch, caps->host.cpu, "vmx") ||
+ virCPUCheckFeature(caps->host.cpu->arch, caps->host.cpu, "svm")))) {
if ((guest = virCapabilitiesAddGuest(caps,
VIR_DOMAIN_OSTYPE_HVM,
}
cleanup:
- virCPUDefFree(cpu);
return caps;
error: