]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Set default values for CPU check attribute
authorJiri Denemark <jdenemar@redhat.com>
Wed, 1 Mar 2017 15:12:07 +0000 (16:12 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Fri, 17 Mar 2017 10:50:48 +0000 (11:50 +0100)
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
39 files changed:
src/qemu/qemu_domain.c
src/qemu/qemu_process.c
tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic-host.xml
tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic-v2.xml
tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic-v3.xml
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none.args [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none.xml [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none2.args [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none2.xml [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial.args [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial.xml [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial2.args [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial2.xml [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-full.args [new symlink]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-full.xml [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-none.args [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-none.xml [new file with mode: 0644]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-partial.args [new symlink]
tests/qemuxml2argvdata/qemuxml2argv-cpu-check-partial.xml [new file with mode: 0644]
tests/qemuxml2argvtest.c
tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-none.xml [new file with mode: 0644]
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-none2.xml [new file with mode: 0644]
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-partial.xml [new file with mode: 0644]
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-partial2.xml [new file with mode: 0644]
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-full.xml [new file with mode: 0644]
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-none.xml [new file with mode: 0644]
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-partial.xml [new file with mode: 0644]
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-eoi-disabled.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-eoi-enabled.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-host-kvmclock.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-host-model-features.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-host-passthrough-features.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-kvmclock.xml
tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml
tests/qemuxml2xmltest.c

index c1778eaf85f0c6cffe99e42bb1d2ad6c0b4e878f..c239a06767624285631904ddaeee1abc89146b78 100644 (file)
@@ -2674,6 +2674,45 @@ qemuDomainDefVcpusPostParse(virDomainDefPtr def)
 }
 
 
+static int
+qemuDomainDefCPUPostParse(virDomainDefPtr def)
+{
+    if (!def->cpu)
+        return 0;
+
+    /* Nothing to be done if only CPU topology is specified. */
+    if (def->cpu->mode == VIR_CPU_MODE_CUSTOM &&
+        !def->cpu->model)
+        return 0;
+
+    if (def->cpu->check != VIR_CPU_CHECK_DEFAULT)
+        return 0;
+
+    switch ((virCPUMode) def->cpu->mode) {
+    case VIR_CPU_MODE_HOST_PASSTHROUGH:
+        def->cpu->check = VIR_CPU_CHECK_NONE;
+        break;
+
+    case VIR_CPU_MODE_HOST_MODEL:
+        def->cpu->check = VIR_CPU_CHECK_PARTIAL;
+        break;
+
+    case VIR_CPU_MODE_CUSTOM:
+        /* Custom CPUs in TCG mode are not compared to host CPU by default. */
+        if (def->virtType == VIR_DOMAIN_VIRT_QEMU)
+            def->cpu->check = VIR_CPU_CHECK_NONE;
+        else
+            def->cpu->check = VIR_CPU_CHECK_PARTIAL;
+        break;
+
+    case VIR_CPU_MODE_LAST:
+        break;
+    }
+
+    return 0;
+}
+
+
 static int
 qemuDomainDefPostParse(virDomainDefPtr def,
                        virCapsPtr caps,
@@ -2738,6 +2777,9 @@ qemuDomainDefPostParse(virDomainDefPtr def,
     if (qemuDomainDefVcpusPostParse(def) < 0)
         goto cleanup;
 
+    if (qemuDomainDefCPUPostParse(def) < 0)
+        goto cleanup;
+
     ret = 0;
  cleanup:
     virObjectUnref(qemuCaps);
index 7397f59c7ab75b03a4d20c8ff605fd27d4e871ff..061c9557662eccaf75c7e0443d64fafcff85ed8e 100644 (file)
@@ -5192,14 +5192,11 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def,
     if (def->cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH)
         return 0;
 
-    /* custom CPUs in TCG mode don't need to be compared to host CPU */
-    if (def->virtType != VIR_DOMAIN_VIRT_QEMU ||
-        def->cpu->mode != VIR_CPU_MODE_CUSTOM) {
-        if (virCPUCompare(caps->host.arch,
-                          virQEMUCapsGetHostModel(qemuCaps, def->virtType),
-                          def->cpu, true) < 0)
-            return -1;
-    }
+    if (def->cpu->check == VIR_CPU_CHECK_PARTIAL &&
+        virCPUCompare(caps->host.arch,
+                      virQEMUCapsGetHostModel(qemuCaps, def->virtType),
+                      def->cpu, true) < 0)
+        return -1;
 
     if (virCPUUpdate(def->os.arch, def->cpu,
                      virQEMUCapsGetHostModel(qemuCaps, def->virtType)) < 0)
index 445b35857a78250689c6b1a52d5d40c7b7d948f4..b14d14281f6e8f5f337a35004edb48010a103304 100644 (file)
@@ -11,7 +11,7 @@
   <features>
     <gic version='host'/>
   </features>
-  <cpu mode='host-passthrough'/>
+  <cpu mode='host-passthrough' check='none'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
index 9ccba9904228de87fa1bc69e58ff375da2df4dd9..8b9983752285593586bf38220cbd2c7d734f76fc 100644 (file)
@@ -11,7 +11,7 @@
   <features>
     <gic version='2'/>
   </features>
-  <cpu mode='host-passthrough'/>
+  <cpu mode='host-passthrough' check='none'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
index 7c9ee92b3923ce61089d8600468820ce47b939cb..bde94e16c0ee61cf4fe0f5d6064d3200743843f2 100644 (file)
@@ -11,7 +11,7 @@
   <features>
     <gic version='3'/>
   </features>
-  <cpu mode='host-passthrough'/>
+  <cpu mode='host-passthrough' check='none'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none.args
new file mode 100644 (file)
index 0000000..24d9f53
--- /dev/null
@@ -0,0 +1,21 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/home/test \
+USER=test \
+LOGNAME=test \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-kvm \
+-name QEMUGuest1 \
+-S \
+-M pc \
+-cpu host \
+-m 214 \
+-smp 6,sockets=6,cores=1,threads=1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-nographic \
+-nodefaults \
+-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
+-no-acpi \
+-boot n \
+-usb \
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none.xml
new file mode 100644 (file)
index 0000000..314cdf5
--- /dev/null
@@ -0,0 +1,19 @@
+<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='host-passthrough'/>
+  <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>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none2.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none2.args
new file mode 100644 (file)
index 0000000..b6a5d4d
--- /dev/null
@@ -0,0 +1,21 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/home/test \
+USER=test \
+LOGNAME=test \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu \
+-name QEMUGuest1 \
+-S \
+-M pc \
+-cpu core2duo \
+-m 214 \
+-smp 6,sockets=6,cores=1,threads=1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-nographic \
+-nodefaults \
+-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
+-no-acpi \
+-boot n \
+-usb \
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none2.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-none2.xml
new file mode 100644 (file)
index 0000000..286d2d5
--- /dev/null
@@ -0,0 +1,21 @@
+<domain type='qemu'>
+  <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'>core2duo</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</emulator>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial.args
new file mode 100644 (file)
index 0000000..decf7fd
--- /dev/null
@@ -0,0 +1,22 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/home/test \
+USER=test \
+LOGNAME=test \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-kvm \
+-name QEMUGuest1 \
+-S \
+-M pc \
+-cpu core2duo,+ds,+acpi,+ss,+ht,+tm,+pbe,+ds_cpl,+vmx,+est,+tm2,+cx16,+xtpr,\
++lahf_lm \
+-m 214 \
+-smp 6,sockets=6,cores=1,threads=1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-nographic \
+-nodefaults \
+-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
+-no-acpi \
+-boot n \
+-usb \
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial.xml
new file mode 100644 (file)
index 0000000..3dd45a7
--- /dev/null
@@ -0,0 +1,19 @@
+<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='host-model'/>
+  <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>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial2.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial2.args
new file mode 100644 (file)
index 0000000..bd4cefa
--- /dev/null
@@ -0,0 +1,21 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/home/test \
+USER=test \
+LOGNAME=test \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-kvm \
+-name QEMUGuest1 \
+-S \
+-M pc \
+-cpu core2duo \
+-m 214 \
+-smp 6,sockets=6,cores=1,threads=1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-nographic \
+-nodefaults \
+-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
+-no-acpi \
+-boot n \
+-usb \
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial2.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-default-partial2.xml
new file mode 100644 (file)
index 0000000..6c7690a
--- /dev/null
@@ -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'>core2duo</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>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-full.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-full.args
new file mode 120000 (symlink)
index 0000000..dd94610
--- /dev/null
@@ -0,0 +1 @@
+qemuxml2argv-cpu-check-none.args
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-full.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-full.xml
new file mode 100644 (file)
index 0000000..653c2aa
--- /dev/null
@@ -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' check='full'>
+    <model fallback='forbid'>core2duo</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>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-none.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-none.args
new file mode 100644 (file)
index 0000000..bd4cefa
--- /dev/null
@@ -0,0 +1,21 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/home/test \
+USER=test \
+LOGNAME=test \
+QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-kvm \
+-name QEMUGuest1 \
+-S \
+-M pc \
+-cpu core2duo \
+-m 214 \
+-smp 6,sockets=6,cores=1,threads=1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-nographic \
+-nodefaults \
+-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
+-no-acpi \
+-boot n \
+-usb \
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-none.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-none.xml
new file mode 100644 (file)
index 0000000..6320746
--- /dev/null
@@ -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' check='none'>
+    <model fallback='forbid'>core2duo</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>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-partial.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-partial.args
new file mode 120000 (symlink)
index 0000000..dd94610
--- /dev/null
@@ -0,0 +1 @@
+qemuxml2argv-cpu-check-none.args
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-partial.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-check-partial.xml
new file mode 100644 (file)
index 0000000..8e7850d
--- /dev/null
@@ -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' check='partial'>
+    <model fallback='forbid'>core2duo</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>
index 4a661367f4a740457414e17fe43747ab9f66555d..64e14af891813448160aab59774d76de132076a3 100644 (file)
@@ -2488,6 +2488,14 @@ mymain(void)
     DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_MEM_PATH, QEMU_CAPS_OBJECT_MEMORY_FILE,
             QEMU_CAPS_KVM);
 
+    DO_TEST("cpu-check-none", QEMU_CAPS_KVM);
+    DO_TEST("cpu-check-partial", QEMU_CAPS_KVM);
+    DO_TEST("cpu-check-full", QEMU_CAPS_KVM);
+    DO_TEST("cpu-check-default-none", QEMU_CAPS_KVM);
+    DO_TEST("cpu-check-default-none2", NONE);
+    DO_TEST("cpu-check-default-partial", QEMU_CAPS_KVM);
+    DO_TEST("cpu-check-default-partial2", QEMU_CAPS_KVM);
+
     qemuTestDriverFree(&driver);
 
     return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
index 2f1f8dd3de01a962ce1fd125aaf1032320d422f5..bea65990e7443c45d5072576086ef3cc359a3e9d 100644 (file)
@@ -18,7 +18,7 @@
     <pae/>
     <gic version='2'/>
   </features>
-  <cpu mode='custom' match='exact'>
+  <cpu mode='custom' match='exact' check='none'>
     <model fallback='allow'>cortex-a53</model>
   </cpu>
   <clock offset='utc'/>
index 26f6a51622ef134e8ec4b7cd7722ef577ceda697..2c765e7c356837d8305c9bce3c5c21dc8b4005e4 100644 (file)
@@ -11,7 +11,7 @@
     <acpi/>
     <gic version='2'/>
   </features>
-  <cpu mode='custom' match='exact'>
+  <cpu mode='custom' match='exact' check='none'>
     <model fallback='allow'>cortex-a57</model>
   </cpu>
   <clock offset='utc'/>
index f7fbdc7a9ba6d49e75d42fce5be04812e3b04143..88a6a6a0c27461d104fefda18e2d0de50a4afef9 100644 (file)
@@ -18,7 +18,7 @@
     <pae/>
     <gic version='2'/>
   </features>
-  <cpu mode='custom' match='exact'>
+  <cpu mode='custom' match='exact' check='none'>
     <model fallback='allow'>cortex-a53</model>
   </cpu>
   <clock offset='utc'/>
index 1b50f75f0cc6519424abd8eab7cc36676f786e4c..83cf0d1f51230d1233e903075f5e90041ddfbc09 100644 (file)
@@ -18,7 +18,7 @@
     <pae/>
     <gic version='2'/>
   </features>
-  <cpu mode='custom' match='exact'>
+  <cpu mode='custom' match='exact' check='none'>
     <model fallback='allow'>cortex-a53</model>
   </cpu>
   <clock offset='utc'/>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-none.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-none.xml
new file mode 100644 (file)
index 0000000..b25cdd5
--- /dev/null
@@ -0,0 +1,28 @@
+<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='host-passthrough' check='none'/>
+  <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>
+    <controller type='usb' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-none2.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-none2.xml
new file mode 100644 (file)
index 0000000..310b95e
--- /dev/null
@@ -0,0 +1,30 @@
+<domain type='qemu'>
+  <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' check='none'>
+    <model fallback='forbid'>core2duo</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</emulator>
+    <controller type='usb' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-partial.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-partial.xml
new file mode 100644 (file)
index 0000000..f4bfe54
--- /dev/null
@@ -0,0 +1,30 @@
+<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='host-model' check='partial'>
+    <model fallback='allow'/>
+  </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>
+    <controller type='usb' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-partial2.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-default-partial2.xml
new file mode 100644 (file)
index 0000000..8619f00
--- /dev/null
@@ -0,0 +1,30 @@
+<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' check='partial'>
+    <model fallback='forbid'>core2duo</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>
+    <controller type='usb' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-full.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-full.xml
new file mode 100644 (file)
index 0000000..3fd13f2
--- /dev/null
@@ -0,0 +1,30 @@
+<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' check='full'>
+    <model fallback='forbid'>core2duo</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>
+    <controller type='usb' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-none.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-none.xml
new file mode 100644 (file)
index 0000000..d71ad5f
--- /dev/null
@@ -0,0 +1,30 @@
+<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' check='none'>
+    <model fallback='forbid'>core2duo</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>
+    <controller type='usb' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-partial.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-check-partial.xml
new file mode 100644 (file)
index 0000000..8619f00
--- /dev/null
@@ -0,0 +1,30 @@
+<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' check='partial'>
+    <model fallback='forbid'>core2duo</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>
+    <controller type='usb' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
index 7a51e3ddfb592a103cc00cc62b21f3a9cbbbcb08..b29a24e52ca826a6095751c3e6af5e8c2b610266 100644 (file)
@@ -13,7 +13,7 @@
     <apic eoi='off'/>
     <pae/>
   </features>
-  <cpu mode='custom' match='exact'>
+  <cpu mode='custom' match='exact' check='none'>
     <model fallback='allow'>qemu32</model>
   </cpu>
   <clock offset='utc'/>
index ae8ab6aeeafee8d147ec0c61b389d9738e213da4..efba9e5db05546f51b7052cb9aa214ba00b0eec7 100644 (file)
@@ -13,7 +13,7 @@
     <apic eoi='on'/>
     <pae/>
   </features>
-  <cpu mode='custom' match='exact'>
+  <cpu mode='custom' match='exact' check='none'>
     <model fallback='allow'>qemu32</model>
   </cpu>
   <clock offset='utc'/>
index c2bdad91f3e7a966ce015394c316b0dd0f3703c3..df0aecb3ed7251722bc7228fe2ef8e8d5cdfad4e 100644 (file)
@@ -8,7 +8,7 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu mode='host-passthrough'/>
+  <cpu mode='host-passthrough' check='none'/>
   <clock offset='utc'>
     <timer name='kvmclock' present='no'/>
   </clock>
index 161fcfe399f4534123e44711c3e1b7d4fae82e9c..b1e194910dd7662f313a01c67575ba08a7c2a589 100644 (file)
@@ -13,7 +13,7 @@
     <type arch='i686' machine='pc'>hvm</type>
     <boot dev='hd'/>
   </os>
-  <cpu mode='host-model'>
+  <cpu mode='host-model' check='partial'>
     <model fallback='allow'/>
     <feature policy='require' name='abm'/>
     <feature policy='force' name='ds'/>
index 935f8cd39f55b6982010cac282278e65191b9992..98189c43f904a4b21c8de44c37abb00586ad510a 100644 (file)
@@ -13,7 +13,7 @@
     <type arch='i686' machine='pc'>hvm</type>
     <boot dev='hd'/>
   </os>
-  <cpu mode='host-passthrough'>
+  <cpu mode='host-passthrough' check='none'>
     <feature policy='require' name='abm'/>
     <feature policy='force' name='ds'/>
     <feature policy='disable' name='invtsc'/>
index 4d222de4a1f99644f402ef37a530fb41a59e3b05..a483025a08df2c9df9bd1b35c821e6a301cf3291 100644 (file)
@@ -8,7 +8,7 @@
     <type arch='i686' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu mode='custom' match='exact'>
+  <cpu mode='custom' match='exact' check='partial'>
     <model fallback='allow'>core2duo</model>
   </cpu>
   <clock offset='utc'>
index 5f881f1fbb68b6453be1bd0d23defb8a31063531..b807ac31bb2ef6d32d94df55b1dcd4bdd7f97aca 100644 (file)
@@ -15,7 +15,7 @@
     <apic/>
     <pae/>
   </features>
-  <cpu mode='custom' match='exact'>
+  <cpu mode='custom' match='exact' check='partial'>
     <model fallback='allow'>core2duo</model>
     <vendor>Intel</vendor>
     <topology sockets='1' cores='2' threads='1'/>
index 7199175633ae161867998e443ae7dc53638802c0..266b9c02339ba05dd7cb6e813923e5a1b281a391 100644 (file)
@@ -1125,6 +1125,14 @@ mymain(void)
             QEMU_CAPS_MACHINE_OPT,
             QEMU_CAPS_MACHINE_IOMMU);
 
+    DO_TEST("cpu-check-none", NONE);
+    DO_TEST("cpu-check-partial", NONE);
+    DO_TEST("cpu-check-full", NONE);
+    DO_TEST("cpu-check-default-none", NONE);
+    DO_TEST("cpu-check-default-none2", NONE);
+    DO_TEST("cpu-check-default-partial", NONE);
+    DO_TEST("cpu-check-default-partial2", NONE);
+
     qemuTestDriverFree(&driver);
 
     return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;