[libvirt] [PATCH 0/4] qemu: Use host-model CPU on s390 by default
Boris Fiuczynski
fiuczy at linux.ibm.com
Mon Nov 18 17:34:36 UTC 2019
On 11/15/19 4:14 PM, Jiri Denemark wrote:
> On Fri, Nov 15, 2019 at 15:55:04 +0100, Christian Borntraeger wrote:
>>
>>
>> On 15.11.19 15:47, Jiri Denemark wrote:
>>> On Fri, Nov 15, 2019 at 15:12:18 +0100, Boris Fiuczynski wrote:
>>>> Just a heads up.
>>>> After installing libvirt rpms of this branch all my existing kvm s390
>>>> domains ended up with
>>>>
>>>> <cpu mode='custom' match='exact' check='none'>
>>>> <model fallback='forbid'>qemu</model>
>>>> </cpu>
>>>>
>>>> Newly defined domains without specified cpu do so as well.
>>>
>>> Unless the domains are all TCG, it seems your QEMU is too old. You need
>>> a fairly recent one which contains commit v4.1.0-1683-gde60a92ea7
>>> (s390x/kvm: Set default cpu model for all machine classes)
>>>
>>> I the domains all use KVM and you have new enough QEMU, there might be a
>>> bug somewhere. Which should not happen :=)
>>
>> So shouldnt libvirt fence this rework (add default model) to qemu 4.2 and newer?
>
> Libvirt does all this only if query-machines returns default-cpu-type,
> which is introduced in 4.2. But since it was introduced earlier, anyone
> using qemu from git between the two commits will see this behavior.
> Somewhat similar thing will happen on ppc64, but even with the current
> master. Everything should be OK once QEMU 4.2.0 final release is used,
> though (since it will contain all required patches).
>
> Jirka
>
I tested with a newer version of qemu and it worked as you outlined.
After that I also tested with qemu v4.1.0. I was a bit surprised at
first that a default host-model cpu was generated since I though it
would only be done when the qemu has the commit your specified above.
After reading your patch 4 the generation is tied to the cpu-model
support in qemu. Since this became available on s390 with qemu v2.8.0 I
created an additional test patch just to ensure that we do not lose
backwards compatibility.
I also attached the patch if below does not work out.
=======
> From: Boris Fiuczynski <fiuczy at linux.ibm.com>
> Date: Mon, 18 Nov 2019 17:41:02 +0100
> Subject: [PATCH] qemuxml2*test: Add test cases for not setting default CPU
> models on s390
>
> Adding tests for QEMU v2.7.0 which was the last version without CPU model
> support on s390 to ensure the default CPU model is not automatically added.
>
> Signed-off-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
> ---
> ...lt-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.args | 29 +++++++++++++++++++
> .../s390-default-cpu-kvm-ccw-virtio-2.7.xml | 16 ++++++++++
> tests/qemuxml2argvtest.c | 1 +
> ...ult-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.xml | 23 +++++++++++++++
> tests/qemuxml2xmltest.c | 1 +
> 5 files changed, 70 insertions(+)
> create mode 100644 tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.args
> create mode 100644 tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-2.7.xml
> create mode 100644 tests/qemuxml2xmloutdata/s390-default-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.xml
>
> diff --git a/tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.args b/tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.args
> new file mode 100644
> index 0000000000..431de90bcc
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.args
> @@ -0,0 +1,29 @@
> +LC_ALL=C \
> +PATH=/bin \
> +HOME=/tmp/lib/domain--1-test \
> +USER=test \
> +LOGNAME=test \
> +XDG_DATA_HOME=/tmp/lib/domain--1-test/.local/share \
> +XDG_CACHE_HOME=/tmp/lib/domain--1-test/.cache \
> +XDG_CONFIG_HOME=/tmp/lib/domain--1-test/.config \
> +QEMU_AUDIO_DRV=none \
> +/usr/bin/qemu-system-s390x \
> +-name guest=test,debug-threads=on \
> +-S \
> +-object secret,id=masterKey0,format=raw,\
> +file=/tmp/lib/domain--1-test/master-key.aes \
> +-machine s390-ccw-virtio-2.7,accel=kvm,usb=off,dump-guest-core=off \
> +-m 256 \
> +-realtime mlock=off \
> +-smp 1,sockets=1,cores=1,threads=1 \
> +-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \
> +-display none \
> +-no-user-config \
> +-nodefaults \
> +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-test/monitor.sock,server,nowait \
> +-mon chardev=charmonitor,id=monitor,mode=control \
> +-rtc base=utc \
> +-no-shutdown \
> +-boot strict=on \
> +-device virtio-balloon-ccw,id=balloon0,devno=fe.0.0000 \
> +-msg timestamp=on
> diff --git a/tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-2.7.xml b/tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-2.7.xml
> new file mode 100644
> index 0000000000..5051c861ee
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-2.7.xml
> @@ -0,0 +1,16 @@
> +<domain type='kvm'>
> + <name>test</name>
> + <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
> + <memory>262144</memory>
> + <currentMemory>262144</currentMemory>
> + <os>
> + <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
> + </os>
> + <clock offset='utc'/>
> + <on_poweroff>destroy</on_poweroff>
> + <on_reboot>restart</on_reboot>
> + <on_crash>destroy</on_crash>
> + <devices>
> + <emulator>/usr/bin/qemu-system-s390x</emulator>
> + </devices>
> +</domain>
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index e3e2bc5e63..753c588f95 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -3031,6 +3031,7 @@ mymain(void)
> DO_TEST_CAPS_ARCH_LATEST("ppc64-default-cpu-tcg-pseries-3.1", "ppc64");
> DO_TEST_CAPS_ARCH_LATEST("ppc64-default-cpu-kvm-pseries-4.2", "ppc64");
> DO_TEST_CAPS_ARCH_LATEST("ppc64-default-cpu-tcg-pseries-4.2", "ppc64");
> + DO_TEST_CAPS_ARCH_VER("s390-default-cpu-kvm-ccw-virtio-2.7", "s390x", "2.7.0");
> DO_TEST_CAPS_ARCH_LATEST("s390-default-cpu-kvm-ccw-virtio-4.2", "s390x");
> DO_TEST_CAPS_ARCH_LATEST("s390-default-cpu-tcg-ccw-virtio-4.2", "s390x");
> DO_TEST_CAPS_ARCH_LATEST("x86_64-default-cpu-kvm-pc-4.2", "x86_64");
> diff --git a/tests/qemuxml2xmloutdata/s390-default-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.xml b/tests/qemuxml2xmloutdata/s390-default-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.xml
> new file mode 100644
> index 0000000000..9ae5356bf3
> --- /dev/null
> +++ b/tests/qemuxml2xmloutdata/s390-default-cpu-kvm-ccw-virtio-2.7.s390x-2.7.0.xml
> @@ -0,0 +1,23 @@
> +<domain type='kvm'>
> + <name>test</name>
> + <uuid>9aa4b45c-b9dd-45ef-91fe-862b27b4231f</uuid>
> + <memory unit='KiB'>262144</memory>
> + <currentMemory unit='KiB'>262144</currentMemory>
> + <vcpu placement='static'>1</vcpu>
> + <os>
> + <type arch='s390x' machine='s390-ccw-virtio-2.7'>hvm</type>
> + <boot dev='hd'/>
> + </os>
> + <clock offset='utc'/>
> + <on_poweroff>destroy</on_poweroff>
> + <on_reboot>restart</on_reboot>
> + <on_crash>destroy</on_crash>
> + <devices>
> + <emulator>/usr/bin/qemu-system-s390x</emulator>
> + <controller type='pci' index='0' model='pci-root'/>
> + <memballoon model='virtio'>
> + <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/>
> + </memballoon>
> + <panic model='s390'/>
> + </devices>
> +</domain>
> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
> index 64a6971740..9bf1969047 100644
> --- a/tests/qemuxml2xmltest.c
> +++ b/tests/qemuxml2xmltest.c
> @@ -1349,6 +1349,7 @@ mymain(void)
> DO_TEST_CAPS_ARCH_LATEST("ppc64-default-cpu-tcg-pseries-3.1", "ppc64");
> DO_TEST_CAPS_ARCH_LATEST("ppc64-default-cpu-kvm-pseries-4.2", "ppc64");
> DO_TEST_CAPS_ARCH_LATEST("ppc64-default-cpu-tcg-pseries-4.2", "ppc64");
> + DO_TEST_CAPS_ARCH_VER("s390-default-cpu-kvm-ccw-virtio-2.7", "s390x", "2.7.0");
> DO_TEST_CAPS_ARCH_LATEST("s390-default-cpu-kvm-ccw-virtio-4.2", "s390x");
> DO_TEST_CAPS_ARCH_LATEST("s390-default-cpu-tcg-ccw-virtio-4.2", "s390x");
> DO_TEST_CAPS_ARCH_LATEST("x86_64-default-cpu-kvm-pc-4.2", "x86_64");
> --
> 2.21.0
--
Mit freundlichen Grüßen/Kind regards
Boris Fiuczynski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Matthias Hartmann
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-qemuxml2-test-Add-test-cases-for-not-setting-default.patch
Type: text/x-patch
Size: 5681 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20191118/3248b305/attachment-0001.bin>
More information about the libvir-list
mailing list