}
-int
-virCPUx86DataAddCPUID(virCPUx86Data *data,
- const virCPUx86CPUID *cpuid)
+static int
+virCPUx86DataAddCPUIDInt(virCPUx86Data *data,
+ const virCPUx86CPUID *cpuid)
{
virCPUx86CPUID *existing;
if (cpuid1) {
x86cpuidSetBits(cpuid1, cpuid2);
} else {
- if (virCPUx86DataAddCPUID(data1, cpuid2) < 0)
+ if (virCPUx86DataAddCPUIDInt(data1, cpuid2) < 0)
return -1;
}
}
{
virCPUx86CPUID cpuid = { .eax_in = 0x1, .eax = signature };
- return virCPUx86DataAddCPUID(data, &cpuid);
+ return virCPUx86DataAddCPUIDInt(data, &cpuid);
}
i, feature->name);
goto error;
}
- if (virCPUx86DataAddCPUID(&feature->data, &cpuid))
+ if (virCPUx86DataAddCPUIDInt(&feature->data, &cpuid))
goto error;
}
_("failed to parse cpuid[%zu]"), i);
goto error;
}
- if (virCPUx86DataAddCPUID(&cpuData->data.x86, &cpuid) < 0)
+ if (virCPUx86DataAddCPUID(cpuData, &cpuid) < 0)
goto error;
}
goto error;
if (cpu->vendor && host_model->vendor &&
- virCPUx86DataAddCPUID(&guest_model->data,
- &host_model->vendor->cpuid) < 0)
+ virCPUx86DataAddCPUIDInt(&guest_model->data,
+ &host_model->vendor->cpuid) < 0)
goto error;
if (x86DataAddSignature(&guest_model->data, host_model->signature) < 0)
if (!(data_vendor = virCPUDataNew(arch)))
goto error;
- if (v && virCPUx86DataAddCPUID(&data_vendor->data.x86, &v->cpuid) < 0)
+ if (v && virCPUx86DataAddCPUID(data_vendor, &v->cpuid) < 0)
goto error;
}
* Sub leaf n+1 is invalid if eax[4:0] in sub leaf n equals 0.
*/
static int
-cpuidSetLeaf4(virCPUx86Data *data,
+cpuidSetLeaf4(virCPUDataPtr data,
virCPUx86CPUID *subLeaf0)
{
virCPUx86CPUID cpuid = *subLeaf0;
* Sub leaf n is invalid if n > eax in sub leaf 0.
*/
static int
-cpuidSetLeaf7(virCPUx86Data *data,
+cpuidSetLeaf7(virCPUDataPtr data,
virCPUx86CPUID *subLeaf0)
{
virCPUx86CPUID cpuid = { .eax_in = 0x7 };
* meaningful data even if it was (theoretically) considered invalid.
*/
static int
-cpuidSetLeafB(virCPUx86Data *data,
+cpuidSetLeafB(virCPUDataPtr data,
virCPUx86CPUID *subLeaf0)
{
virCPUx86CPUID cpuid = *subLeaf0;
* and edx[n-32] from sub leaf 1 is not set.
*/
static int
-cpuidSetLeafD(virCPUx86Data *data,
+cpuidSetLeafD(virCPUDataPtr data,
virCPUx86CPUID *subLeaf0)
{
virCPUx86CPUID cpuid = { .eax_in = 0xd };
* 0x10: Sub leaf n is valid if ebx[n] (= res[ResID]) from sub leaf 0 is set.
*/
static int
-cpuidSetLeafResID(virCPUx86Data *data,
+cpuidSetLeafResID(virCPUDataPtr data,
virCPUx86CPUID *subLeaf0,
uint32_t res)
{
* Sub leaves n >= 2 are valid as long as eax[3:0] != 0.
*/
static int
-cpuidSetLeaf12(virCPUx86Data *data,
+cpuidSetLeaf12(virCPUDataPtr data,
virCPUx86CPUID *subLeaf0)
{
virCPUx86CPUID cpuid = { .eax_in = 0x7 };
virCPUx86CPUID *cpuid7;
- if (!(cpuid7 = x86DataCpuid(data, &cpuid)) ||
+ if (!(cpuid7 = x86DataCpuid(&data->data.x86, &cpuid)) ||
!(cpuid7->ebx & (1 << 2)))
return 0;
* Sub leaf 0 reports the maximum supported sub leaf in eax.
*/
static int
-cpuidSetLeaf14(virCPUx86Data *data,
+cpuidSetLeaf14(virCPUDataPtr data,
virCPUx86CPUID *subLeaf0)
{
virCPUx86CPUID cpuid = { .eax_in = 0x14 };
* Sub leaf 0 reports the maximum supported sub leaf in eax.
*/
static int
-cpuidSetLeaf17(virCPUx86Data *data,
+cpuidSetLeaf17(virCPUDataPtr data,
virCPUx86CPUID *subLeaf0)
{
virCPUx86CPUID cpuid = { .eax_in = 0x17 };
static int
-cpuidSet(uint32_t base, virCPUx86Data *data)
+cpuidSet(uint32_t base, virCPUDataPtr data)
{
int rc;
uint32_t max;
if (!(cpuData = virCPUDataNew(arch)))
goto error;
- if (cpuidSet(CPUX86_BASIC, &cpuData->data.x86) < 0)
+ if (cpuidSet(CPUX86_BASIC, cpuData) < 0)
goto error;
- if (cpuidSet(CPUX86_EXTENDED, &cpuData->data.x86) < 0)
+ if (cpuidSet(CPUX86_EXTENDED, cpuData) < 0)
goto error;
return cpuData;
goto error;
}
- if (vendor && virCPUx86DataAddCPUID(&base_model->data, &vendor->cpuid) < 0)
+ if (vendor &&
+ virCPUx86DataAddCPUIDInt(&base_model->data, &vendor->cpuid) < 0)
goto error;
if (x86Decode(cpu, &base_model->data, models, nmodels, modelName, flags) < 0)
goto cleanup;
if (model->vendor &&
- virCPUx86DataAddCPUID(&model->data, &model->vendor->cpuid) < 0)
+ virCPUx86DataAddCPUIDInt(&model->data, &model->vendor->cpuid) < 0)
goto cleanup;
if (x86DataAddSignature(&model->data, model->signature) < 0)
}
+int
+virCPUx86DataAddCPUID(virCPUDataPtr cpuData,
+ const virCPUx86CPUID *cpuid)
+{
+ return virCPUx86DataAddCPUIDInt(&cpuData->data.x86, cpuid);
+}
+
+
struct cpuArchDriver cpuDriverX86 = {
.name = "x86",
.arch = archs,