mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-18 10:35:20 +00:00
cpu: Add {Haswell,Broadwell}-noTSX CPU models
QEMU 2.3 adds these new models to cover Haswell and Broadwell CPUs with updated microcode. Luckily, they also reverted former the machine type specific changes to existing models. And since these changes were never released, we don't need to hack around them in libvirt. Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
82f349a3a8
commit
c563b50605
@ -500,30 +500,40 @@
|
||||
<feature name='rdtscp'/>
|
||||
</model>
|
||||
|
||||
<model name='Haswell'>
|
||||
<model name='Haswell-noTSX'>
|
||||
<model name='SandyBridge'/>
|
||||
<feature name='fma'/>
|
||||
<feature name='pcid'/>
|
||||
<feature name='movbe'/>
|
||||
<feature name='fsgsbase'/>
|
||||
<feature name='bmi1'/>
|
||||
<feature name='hle'/>
|
||||
<feature name='avx2'/>
|
||||
<feature name='smep'/>
|
||||
<feature name='bmi2'/>
|
||||
<feature name='erms'/>
|
||||
<feature name='invpcid'/>
|
||||
</model>
|
||||
|
||||
<model name='Haswell'>
|
||||
<model name='Haswell-noTSX'/>
|
||||
<feature name='hle'/>
|
||||
<feature name='rtm'/>
|
||||
</model>
|
||||
|
||||
<model name='Broadwell'>
|
||||
<model name='Haswell'/>
|
||||
<model name='Broadwell-noTSX'>
|
||||
<model name='Haswell-noTSX'/>
|
||||
<feature name='3dnowprefetch'/>
|
||||
<feature name='rdseed'/>
|
||||
<feature name='adx'/>
|
||||
<feature name='smap'/>
|
||||
</model>
|
||||
|
||||
<model name='Broadwell'>
|
||||
<model name='Broadwell-noTSX'/>
|
||||
<feature name='hle'/>
|
||||
<feature name='rtm'/>
|
||||
</model>
|
||||
|
||||
<!-- AMD CPUs -->
|
||||
<model name='athlon'>
|
||||
<model name='pentiumpro'/>
|
||||
|
@ -122,8 +122,10 @@ cpuTestLoadMultiXML(const char *arch,
|
||||
goto cleanup;
|
||||
|
||||
n = virXPathNodeSet("/cpuTest/cpu", ctxt, &nodes);
|
||||
if (n <= 0 || (VIR_ALLOC_N(cpus, n) < 0))
|
||||
if (n <= 0 || (VIR_ALLOC_N(cpus, n) < 0)) {
|
||||
fprintf(stderr, "\nNo /cpuTest/cpu elements found in %s\n", xml);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
ctxt->node = nodes[i];
|
||||
@ -497,6 +499,7 @@ cpuTestRun(const char *name, const struct data *data)
|
||||
static const char *model486[] = { "486" };
|
||||
static const char *nomodel[] = { "nomodel" };
|
||||
static const char *models[] = { "qemu64", "core2duo", "Nehalem" };
|
||||
static const char *haswell[] = { "SandyBridge", "Haswell" };
|
||||
static const char *ppc_models[] = { "POWER7", "POWER7_v2.1", "POWER8_v1.0"};
|
||||
|
||||
static int
|
||||
@ -618,6 +621,8 @@ mymain(void)
|
||||
DO_TEST_BASELINE("x86", "5", VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES, 0);
|
||||
DO_TEST_BASELINE("x86", "6", 0, 0);
|
||||
DO_TEST_BASELINE("x86", "6", VIR_CONNECT_BASELINE_CPU_MIGRATABLE, 0);
|
||||
DO_TEST_BASELINE("x86", "7", 0, 0);
|
||||
DO_TEST_BASELINE("x86", "8", 0, 0);
|
||||
|
||||
DO_TEST_BASELINE("ppc64", "incompatible-vendors", 0, -1);
|
||||
DO_TEST_BASELINE("ppc64", "no-vendor", 0, 0);
|
||||
@ -646,6 +651,14 @@ mymain(void)
|
||||
DO_TEST_GUESTDATA("x86", "host", "host+host-model", models, "Penryn", 0);
|
||||
DO_TEST_GUESTDATA("x86", "host", "host+host-model-nofallback",
|
||||
models, "Penryn", -1);
|
||||
DO_TEST_GUESTDATA("x86", "host-Haswell-noTSX", "Haswell",
|
||||
haswell, "Haswell", 0);
|
||||
DO_TEST_GUESTDATA("x86", "host-Haswell-noTSX", "Haswell-noTSX",
|
||||
haswell, "Haswell-noTSX", 0);
|
||||
DO_TEST_GUESTDATA("x86", "host-Haswell-noTSX", "Haswell-noTSX-nofallback",
|
||||
haswell, "Haswell-noTSX", -1);
|
||||
DO_TEST_GUESTDATA("x86", "host-Haswell-noTSX", "Haswell-noTSX",
|
||||
NULL, "Haswell-noTSX", 0);
|
||||
|
||||
DO_TEST_GUESTDATA("ppc64", "host", "guest", ppc_models, NULL, 0);
|
||||
DO_TEST_GUESTDATA("ppc64", "host", "guest-nofallback", ppc_models, "POWER7_v2.1", -1);
|
||||
|
4
tests/cputestdata/x86-Haswell-noTSX-nofallback.xml
Normal file
4
tests/cputestdata/x86-Haswell-noTSX-nofallback.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<model fallback='forbid'>Haswell-noTSX</model>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
</cpu>
|
4
tests/cputestdata/x86-Haswell-noTSX.xml
Normal file
4
tests/cputestdata/x86-Haswell-noTSX.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<model fallback='allow'>Haswell-noTSX</model>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
</cpu>
|
6
tests/cputestdata/x86-Haswell.xml
Normal file
6
tests/cputestdata/x86-Haswell.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<cpu match='exact'>
|
||||
<model fallback='allow'>Haswell</model>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
<feature name='rtm' policy='disable'/>
|
||||
<feature name='hle' policy='disable'/>
|
||||
</cpu>
|
4
tests/cputestdata/x86-baseline-7-result.xml
Normal file
4
tests/cputestdata/x86-baseline-7-result.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<model fallback='allow'>Haswell-noTSX</model>
|
||||
<vendor>Intel</vendor>
|
||||
</cpu>
|
24
tests/cputestdata/x86-baseline-7.xml
Normal file
24
tests/cputestdata/x86-baseline-7.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<cpuTest>
|
||||
<cpu>
|
||||
<arch>x86_64</arch>
|
||||
<model>SandyBridge</model>
|
||||
<vendor>Intel</vendor>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
<feature name='invpcid'/>
|
||||
<feature name='erms'/>
|
||||
<feature name='bmi2'/>
|
||||
<feature name='smep'/>
|
||||
<feature name='avx2'/>
|
||||
<feature name='bmi1'/>
|
||||
<feature name='fsgsbase'/>
|
||||
<feature name='movbe'/>
|
||||
<feature name='pcid'/>
|
||||
<feature name='fma'/>
|
||||
</cpu>
|
||||
<cpu>
|
||||
<arch>x86_64</arch>
|
||||
<model>Haswell-noTSX</model>
|
||||
<vendor>Intel</vendor>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
</cpu>
|
||||
</cpuTest>
|
4
tests/cputestdata/x86-baseline-8-result.xml
Normal file
4
tests/cputestdata/x86-baseline-8-result.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<model fallback='allow'>Broadwell-noTSX</model>
|
||||
<vendor>Intel</vendor>
|
||||
</cpu>
|
28
tests/cputestdata/x86-baseline-8.xml
Normal file
28
tests/cputestdata/x86-baseline-8.xml
Normal file
@ -0,0 +1,28 @@
|
||||
<cpuTest>
|
||||
<cpu>
|
||||
<arch>x86_64</arch>
|
||||
<model>SandyBridge</model>
|
||||
<vendor>Intel</vendor>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
<feature name='invpcid'/>
|
||||
<feature name='erms'/>
|
||||
<feature name='bmi2'/>
|
||||
<feature name='smep'/>
|
||||
<feature name='avx2'/>
|
||||
<feature name='bmi1'/>
|
||||
<feature name='fsgsbase'/>
|
||||
<feature name='movbe'/>
|
||||
<feature name='pcid'/>
|
||||
<feature name='fma'/>
|
||||
<feature name='3dnowprefetch'/>
|
||||
<feature name='rdseed'/>
|
||||
<feature name='adx'/>
|
||||
<feature name='smap'/>
|
||||
</cpu>
|
||||
<cpu>
|
||||
<arch>x86_64</arch>
|
||||
<model>Broadwell-noTSX</model>
|
||||
<vendor>Intel</vendor>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
</cpu>
|
||||
</cpuTest>
|
@ -0,0 +1,6 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<arch>x86_64</arch>
|
||||
<model fallback='allow'>Haswell</model>
|
||||
<feature policy='disable' name='rtm'/>
|
||||
<feature policy='disable' name='hle'/>
|
||||
</cpu>
|
@ -0,0 +1,4 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<arch>x86_64</arch>
|
||||
<model fallback='allow'>Haswell-noTSX</model>
|
||||
</cpu>
|
@ -0,0 +1,6 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<arch>x86_64</arch>
|
||||
<model fallback='allow'>Haswell</model>
|
||||
<feature policy='disable' name='rtm'/>
|
||||
<feature policy='disable' name='hle'/>
|
||||
</cpu>
|
6
tests/cputestdata/x86-host-Haswell-noTSX.xml
Normal file
6
tests/cputestdata/x86-host-Haswell-noTSX.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<cpu>
|
||||
<arch>x86_64</arch>
|
||||
<model>Haswell-noTSX</model>
|
||||
<vendor>Intel</vendor>
|
||||
<topology sockets='1' cores='2' threads='2'/>
|
||||
</cpu>
|
@ -0,0 +1,4 @@
|
||||
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
|
||||
/usr/bin/qemu-kvm -S -M pc -cpu Haswell-noTSX -m 214 -smp 6 \
|
||||
-nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net \
|
||||
none -serial none -parallel none
|
21
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell-noTSX.xml
Normal file
21
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell-noTSX.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<domain type='kvm'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory unit='KiB'>219100</memory>
|
||||
<currentMemory unit='KiB'>219100</currentMemory>
|
||||
<vcpu placement='static'>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='custom' match='exact'>
|
||||
<model fallback='forbid'>Haswell-noTSX</model>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-kvm</emulator>
|
||||
</devices>
|
||||
</domain>
|
4
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell.args
Normal file
4
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell.args
Normal file
@ -0,0 +1,4 @@
|
||||
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
|
||||
/usr/bin/qemu-kvm -S -M pc -cpu Haswell -m 214 -smp 6 \
|
||||
-nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net \
|
||||
none -serial none -parallel none
|
21
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell.xml
Normal file
21
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<domain type='kvm'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory unit='KiB'>219100</memory>
|
||||
<currentMemory unit='KiB'>219100</currentMemory>
|
||||
<vcpu placement='static'>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='custom' match='exact'>
|
||||
<model fallback='forbid'>Haswell</model>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-kvm</emulator>
|
||||
</devices>
|
||||
</domain>
|
4
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell2.args
Normal file
4
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell2.args
Normal file
@ -0,0 +1,4 @@
|
||||
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
|
||||
/usr/bin/qemu-kvm -S -M pc -cpu Haswell,-rtm,-hle -m 214 -smp 6 \
|
||||
-nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net \
|
||||
none -serial none -parallel none
|
23
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell2.xml
Normal file
23
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell2.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<domain type='kvm'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory unit='KiB'>219100</memory>
|
||||
<currentMemory unit='KiB'>219100</currentMemory>
|
||||
<vcpu placement='static'>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='custom' match='exact'>
|
||||
<model fallback='forbid'>Haswell</model>
|
||||
<feature policy='disable' name='rtm'/>
|
||||
<feature policy='disable' name='hle'/>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-kvm</emulator>
|
||||
</devices>
|
||||
</domain>
|
4
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell3.args
Normal file
4
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell3.args
Normal file
@ -0,0 +1,4 @@
|
||||
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
|
||||
/usr/bin/qemu-kvm -S -M pc -cpu Haswell -m 214 -smp 6 \
|
||||
-nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net \
|
||||
none -serial none -parallel none
|
23
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell3.xml
Normal file
23
tests/qemuxml2argvdata/qemuxml2argv-cpu-Haswell3.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<domain type='kvm'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory unit='KiB'>219100</memory>
|
||||
<currentMemory unit='KiB'>219100</currentMemory>
|
||||
<vcpu placement='static'>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='custom' match='exact'>
|
||||
<model fallback='forbid'>Haswell</model>
|
||||
<feature policy='require' name='rtm'/>
|
||||
<feature policy='force' name='hle'/>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-kvm</emulator>
|
||||
</devices>
|
||||
</domain>
|
@ -454,6 +454,7 @@ testAddCPUModels(virQEMUCapsPtr caps, bool skipLegacy)
|
||||
const char *newModels[] = {
|
||||
"Opteron_G3", "Opteron_G2", "Opteron_G1",
|
||||
"Nehalem", "Penryn", "Conroe",
|
||||
"Haswell-noTSX", "Haswell",
|
||||
};
|
||||
const char *legacyModels[] = {
|
||||
"n270", "athlon", "pentium3", "pentium2", "pentium",
|
||||
@ -1253,6 +1254,13 @@ mymain(void)
|
||||
DO_TEST_FAILURE("cpu-qemu-host-passthrough",
|
||||
QEMU_CAPS_KVM, QEMU_CAPS_CPU_HOST);
|
||||
|
||||
driver.caps->host.cpu = cpuHaswell;
|
||||
DO_TEST("cpu-Haswell", QEMU_CAPS_KVM);
|
||||
DO_TEST("cpu-Haswell2", QEMU_CAPS_KVM);
|
||||
DO_TEST("cpu-Haswell3", QEMU_CAPS_KVM);
|
||||
DO_TEST("cpu-Haswell-noTSX", QEMU_CAPS_KVM);
|
||||
driver.caps->host.cpu = cpuDefault;
|
||||
|
||||
DO_TEST("memtune", QEMU_CAPS_NAME);
|
||||
DO_TEST("memtune-unlimited", QEMU_CAPS_NAME);
|
||||
DO_TEST("blkiotune", QEMU_CAPS_NAME);
|
||||
|
@ -12,6 +12,83 @@
|
||||
|
||||
# define VIR_FROM_THIS VIR_FROM_QEMU
|
||||
|
||||
virCPUDefPtr cpuDefault;
|
||||
virCPUDefPtr cpuHaswell;
|
||||
|
||||
static virCPUFeatureDef cpuDefaultFeatures[] = {
|
||||
{ (char *) "lahf_lm", -1 },
|
||||
{ (char *) "xtpr", -1 },
|
||||
{ (char *) "cx16", -1 },
|
||||
{ (char *) "tm2", -1 },
|
||||
{ (char *) "est", -1 },
|
||||
{ (char *) "vmx", -1 },
|
||||
{ (char *) "ds_cpl", -1 },
|
||||
{ (char *) "pbe", -1 },
|
||||
{ (char *) "tm", -1 },
|
||||
{ (char *) "ht", -1 },
|
||||
{ (char *) "ss", -1 },
|
||||
{ (char *) "acpi", -1 },
|
||||
{ (char *) "ds", -1 }
|
||||
};
|
||||
static virCPUDef cpuDefaultData = {
|
||||
VIR_CPU_TYPE_HOST, /* type */
|
||||
0, /* mode */
|
||||
0, /* match */
|
||||
VIR_ARCH_X86_64, /* arch */
|
||||
(char *) "core2duo", /* model */
|
||||
NULL, /* vendor_id */
|
||||
0, /* fallback */
|
||||
(char *) "Intel", /* vendor */
|
||||
1, /* sockets */
|
||||
2, /* cores */
|
||||
1, /* threads */
|
||||
ARRAY_CARDINALITY(cpuDefaultFeatures), /* nfeatures */
|
||||
ARRAY_CARDINALITY(cpuDefaultFeatures), /* nfeatures_max */
|
||||
cpuDefaultFeatures, /* features */
|
||||
};
|
||||
|
||||
static virCPUFeatureDef cpuHaswellFeatures[] = {
|
||||
{ (char *) "lahf_lm", -1 },
|
||||
{ (char *) "invtsc", -1 },
|
||||
{ (char *) "abm", -1 },
|
||||
{ (char *) "pdpe1gb", -1 },
|
||||
{ (char *) "rdrand", -1 },
|
||||
{ (char *) "f16c", -1 },
|
||||
{ (char *) "osxsave", -1 },
|
||||
{ (char *) "pdcm", -1 },
|
||||
{ (char *) "xtpr", -1 },
|
||||
{ (char *) "tm2", -1 },
|
||||
{ (char *) "est", -1 },
|
||||
{ (char *) "smx", -1 },
|
||||
{ (char *) "vmx", -1 },
|
||||
{ (char *) "ds_cpl", -1 },
|
||||
{ (char *) "monitor", -1 },
|
||||
{ (char *) "dtes64", -1 },
|
||||
{ (char *) "pbe", -1 },
|
||||
{ (char *) "tm", -1 },
|
||||
{ (char *) "ht", -1 },
|
||||
{ (char *) "ss", -1 },
|
||||
{ (char *) "acpi", -1 },
|
||||
{ (char *) "ds", -1 },
|
||||
{ (char *) "vme", -1 },
|
||||
};
|
||||
static virCPUDef cpuHaswellData = {
|
||||
VIR_CPU_TYPE_HOST, /* type */
|
||||
0, /* mode */
|
||||
0, /* match */
|
||||
VIR_ARCH_X86_64, /* arch */
|
||||
(char *) "Haswell", /* model */
|
||||
NULL, /* vendor_id */
|
||||
0, /* fallback */
|
||||
(char *) "Intel", /* vendor */
|
||||
1, /* sockets */
|
||||
2, /* cores */
|
||||
2, /* threads */
|
||||
ARRAY_CARDINALITY(cpuHaswellFeatures), /* nfeatures */
|
||||
ARRAY_CARDINALITY(cpuHaswellFeatures), /* nfeatures_max */
|
||||
cpuHaswellFeatures, /* features */
|
||||
};
|
||||
|
||||
static virCapsGuestMachinePtr *testQemuAllocMachines(int *nmachines)
|
||||
{
|
||||
virCapsGuestMachinePtr *machines;
|
||||
@ -239,40 +316,8 @@ virCapsPtr testQemuCapsInit(void)
|
||||
static const char *const xen_machines[] = {
|
||||
"xenner"
|
||||
};
|
||||
static virCPUFeatureDef host_cpu_features[] = {
|
||||
{ (char *) "lahf_lm", -1 },
|
||||
{ (char *) "xtpr", -1 },
|
||||
{ (char *) "cx16", -1 },
|
||||
{ (char *) "tm2", -1 },
|
||||
{ (char *) "est", -1 },
|
||||
{ (char *) "vmx", -1 },
|
||||
{ (char *) "ds_cpl", -1 },
|
||||
{ (char *) "pbe", -1 },
|
||||
{ (char *) "tm", -1 },
|
||||
{ (char *) "ht", -1 },
|
||||
{ (char *) "ss", -1 },
|
||||
{ (char *) "acpi", -1 },
|
||||
{ (char *) "ds", -1 }
|
||||
};
|
||||
static virCPUDef host_cpu = {
|
||||
VIR_CPU_TYPE_HOST, /* type */
|
||||
0, /* mode */
|
||||
0, /* match */
|
||||
VIR_ARCH_X86_64, /* arch */
|
||||
(char *) "core2duo", /* model */
|
||||
NULL, /* vendor_id */
|
||||
0, /* fallback */
|
||||
(char *) "Intel", /* vendor */
|
||||
1, /* sockets */
|
||||
2, /* cores */
|
||||
1, /* threads */
|
||||
ARRAY_CARDINALITY(host_cpu_features), /* nfeatures */
|
||||
ARRAY_CARDINALITY(host_cpu_features), /* nfeatures_max */
|
||||
host_cpu_features, /* features */
|
||||
};
|
||||
|
||||
if ((caps = virCapabilitiesNew(host_cpu.arch,
|
||||
false, false)) == NULL)
|
||||
if (!(caps = virCapabilitiesNew(VIR_ARCH_X86_64, false, false)))
|
||||
return NULL;
|
||||
|
||||
/* Add dummy 'none' security_driver. This is equal to setting
|
||||
@ -285,8 +330,13 @@ virCapsPtr testQemuCapsInit(void)
|
||||
VIR_STRDUP(caps->host.secModels[0].doi, "0") < 0)
|
||||
goto cleanup;
|
||||
|
||||
if ((caps->host.cpu = virCPUDefCopy(&host_cpu)) == NULL ||
|
||||
(machines = testQemuAllocMachines(&nmachines)) == NULL)
|
||||
if (!(cpuDefault = virCPUDefCopy(&cpuDefaultData)) ||
|
||||
!(cpuHaswell = virCPUDefCopy(&cpuHaswellData)))
|
||||
goto cleanup;
|
||||
|
||||
caps->host.cpu = cpuDefault;
|
||||
|
||||
if ((machines = testQemuAllocMachines(&nmachines)) == NULL)
|
||||
goto cleanup;
|
||||
|
||||
if ((guest = virCapabilitiesAddGuest(caps, "hvm", VIR_ARCH_I686,
|
||||
@ -386,6 +436,10 @@ virCapsPtr testQemuCapsInit(void)
|
||||
|
||||
cleanup:
|
||||
virCapabilitiesFreeMachines(machines, nmachines);
|
||||
if (caps->host.cpu != cpuDefault)
|
||||
virCPUDefFree(cpuDefault);
|
||||
if (caps->host.cpu != cpuHaswell)
|
||||
virCPUDefFree(cpuHaswell);
|
||||
virObjectUnref(caps);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -10,4 +10,10 @@ virDomainXMLOptionPtr testQemuXMLConfInit(void);
|
||||
extern qemuBuildCommandLineCallbacks testCallbacks;
|
||||
|
||||
virQEMUCapsPtr qemuTestParseCapabilities(const char *capsFile);
|
||||
|
||||
extern virCPUDefPtr cpuDefault;
|
||||
extern virCPUDefPtr cpuHaswell;
|
||||
void testQemuCapsSetCPU(virCapsPtr caps,
|
||||
virCPUDefPtr hostCPU);
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user