Bug 1678381
| Summary: | [RFE] - libvirt support for cascade lake cpu - Fast Train | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux Advanced Virtualization | Reporter: | Daniel Berrangé <berrange> | |
| Component: | libvirt | Assignee: | Jiri Denemark <jdenemar> | |
| Status: | CLOSED ERRATA | QA Contact: | jiyan <jiyan> | |
| Severity: | unspecified | Docs Contact: | ||
| Priority: | high | |||
| Version: | 8.0 | CC: | chhu, dyuan, jdenemar, jiyan, jsuchane, kchamart, knoel, lhuang, lijin, mjankula, rbalakri, virt-bugs, xuzhang, yalzhang | |
| Target Milestone: | rc | Keywords: | FutureFeature | |
| Target Release: | 8.1 | Flags: | areis:
mirror+
|
|
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | libvirt-5.3.0-1.el8 | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | 1677209 | |||
| : | 1693433 1745045 1749522 (view as bug list) | Environment: | ||
| Last Closed: | 2019-11-06 07:12:59 UTC | Type: | Feature Request | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | 1677209, 1710552 | |||
| Bug Blocks: | 1674420, 1693433, 1745045, 1749522 | |||
|
Description
Daniel Berrangé
2019-02-18 16:33:37 UTC
Added upstream by
commit 2878278c74cc450a7e28a3830ed0ceff3126f12f
Refs: v5.2.0-226-g2878278c74
Author: Jiri Denemark <jdenemar>
AuthorDate: Mon Mar 11 16:39:25 2019 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Apr 12 22:53:39 2019 +0200
cpu_map: Add Cascadelake-Server CPU model
Introduced in QEMU 3.1.0 by commit
c7a88b52f62b30c04158eeb07f73e3f72221b6a8
Signed-off-by: Jiri Denemark <jdenemar>
Reviewed-by: Ján Tomko <jtomko>
Verified this bug on libvirt-5.5.0-2.module+el8.1.0+3773+7dd501bf.x86_64
Version:
libvirt-5.5.0-2.module+el8.1.0+3773+7dd501bf.x86_64
qemu-kvm-4.0.0-6.module+el8.1.0+3736+a2aefea3.x86_64
kernel-4.18.0-126.el8.x86_64
Steps:
1. Prepare a physical host and check cascade lake related cpu info
# cat /usr/share/libvirt/cpu_map/x86_Cascadelake-Server.xml
<cpus>
<model name='Cascadelake-Server'>
<signature family='6' model='85'/> <!-- 050654 -->
<vendor name='Intel'/>
<feature name='3dnowprefetch'/>
<feature name='abm'/>
...
<feature name='avx512vl'/>
<feature name='avx512vnni'/>
...
<feature name='xsaveopt'/>
</model>
</cpus>
# virsh domcapabilities
...
<cpu>
<mode name='host-passthrough' supported='yes'/>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Cascadelake-Server</model>
<vendor>Intel</vendor>
<feature policy='require' name='ss'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='umip'/>
<feature policy='require' name='pku'/>
<feature policy='require' name='md-clear'/>
<feature policy='require' name='stibp'/>
<feature policy='require' name='arch-capabilities'/>
<feature policy='require' name='xsaves'/>
<feature policy='require' name='invtsc'/>
</mode>
...
# virsh capabilities
<capabilities>
...
<model>Cascadelake-Server</model>
<vendor>Intel</vendor>
<microcode version='67108892'/>
<counter name='tsc' frequency='2394375000' scaling='yes'/>
<topology sockets='1' cores='24' threads='2'/>
...
<feature name='ss'/>
...
<feature name='skip-l1dfl-vmentry'/>
<feature name='mds-no'/>
...
<pages unit='KiB' size='1048576'/>
</cpu>
...
2. Test (hypervisor)-cpu-baseline/compare with the output of domcapabilities and capabilities
In local host:
# virsh domcapabilities > dom1.xml
# virsh capabilities > cap1.xml
In another host:
# virsh domcapabilities > dom2.xml
# virsh capabilities > cap2.xml
# # scp dom2.xml cap2.xml root@{{localhost}}:/root
In local host:
# cat cap1.xml cap2.xml >> capall.xml
# cat dom1.xml dom2.xml >> domall.xml
# virsh cpu-compare capall.xml
# virsh cpu-baseline capall.xml
# virsh hypervisor-cpu-compare capall.xml
# virsh hypervisor-cpu-baseline capall.xml
# virsh cpu-compare domall.xml
# virsh cpu-baseline domall.xml
# virsh hypervisor-cpu-compare domall.xml
# virsh hypervisor-cpu-baseline domall.xml
No abnormal err for this 8 cmds.
3. Prepare a shutdown Vm with host-model cpu conf and start VM
# virsh domstate vm1
shut off
# virsh dumpxml vm1 --inactive |grep "<cpu" -A2
<cpu mode='host-model' check='partial'>
<model fallback='allow'/>
</cpu>
# virsh start vm1
Domain vm1 started
4. Check qemu cmd line; active dumpxml and login to VM
# virsh dumpxml vm1 |grep "<cpu" -A20
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Cascadelake-Server</model>
<vendor>Intel</vendor>
<feature policy='require' name='ss'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='umip'/>
<feature policy='require' name='pku'/>
<feature policy='require' name='md-clear'/>
<feature policy='require' name='stibp'/>
<feature policy='require' name='arch-capabilities'/>
<feature policy='require' name='xsaves'/>
</cpu>
# ps -ef |grep vm1
qemu 44538 1 76 22:55 ?
-cpu Cascadelake-Server,ss=on,vmx=on,hypervisor=on,tsc_adjust=on,umip=on,pku=on,md-clear=on,stibp=on,arch-capabilities=on,xsaves=on
# virsh console vm1
Connected to domain vm1
Escape character is ^]
Red Hat Enterprise Linux 8.1 Beta (Ootpa)
Kernel 4.18.0-107.el8.x86_64 on an x86_64
localhost login: root
Password:
[root@localhost ~]# lscpu
...
Model name: Intel Xeon Processor (Cascadelake)
...
Flags: fpu vme ... avx512_vnni ...
5. Create snapshot for VM and check snapshot dumpxml
# virsh snapshot-create-as vm1 s1 --disk-only --diskspec vda,file=/tmp/s1
# virsh snapshot-dumpxml vm1 s1
# systemctl restart libvirtd
# virsh snapshot-dumpxml vm1 s1
6. Save VM state and check save-image-dumpxml file
[because of Bug 1559845 - [Fast] Nested KVM: support for migration of nested hypervisors - Fast Train]
# virsh save vm1 /tmp/vm1.save
error: Failed to save domain vm1 to /tmp/vm1.save
error: internal error: unable to execute QEMU command 'migrate': Nested VMX virtualization does not support live migration yet
7. Test vcpu affinity and hot-plugging vcpus
# virsh domstate vm1
running
# virsh dumpxml vm1 |grep vcpu
<vcpu placement='static' current='4'>8</vcpu>
# virsh vcpuinfo vm1
VCPU: 0
CPU: 58
State: running
CPU time: 9.7s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
VCPU: 1
CPU: 2
State: running
CPU time: 2.7s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
VCPU: 2
CPU: 73
State: running
CPU time: 3.6s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
VCPU: 3
CPU: 24
State: running
CPU time: 2.8s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
# virsh vcpupin vm1 5 0-99
# virsh vcpupin vm1 6 100-191
# virsh vcpupin vm1 7 0-191,^5,^109
# virsh vcpupin vm1 7 0-191,^5,^109
# virsh vcpuinfo vm1
VCPU: 0
CPU: 58
State: running
CPU time: 9.8s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
VCPU: 1
CPU: 2
State: running
CPU time: 2.9s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
VCPU: 2
CPU: 73
State: running
CPU time: 3.8s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
VCPU: 3
CPU: 24
State: running
CPU time: 3.1s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
VCPU: 4
CPU: 159
State: running
CPU time: 0.1s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
VCPU: 5
CPU: 63
State: running
CPU time: 0.1s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy--------------------------------------------------------------------------------------------
VCPU: 6
CPU: 100
State: running
CPU time: 0.4s
CPU Affinity: ----------------------------------------------------------------------------------------------------yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
# virsh console vm1
Connected to domain vm1
Escape character is ^]
Red Hat Enterprise Linux 8.1 Beta (Ootpa)
Kernel 4.18.0-107.el8.x86_64 on an x86_64
localhost login: root
Password:
Last login: Sat Aug 3 10:56:49 on ttyS0
[root@localhost ~]# lscpu
...
On-line CPU(s) list: 0-6
...
Model name: Intel Xeon Processor (Cascadelake)
8.Test nagative scenarios: start Vm with Cascadelake cpu model on host does not support Cascadelake
# lscpu
...
Model: 60
Model name: Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz
# virsh domstate vm1
shut off
# virsh dumpxml vm1 --inactive
<cpu mode='custom' match='exact' check='partial'>
<model fallback='forbid'>Cascadelake-Server</model>
<vendor>Intel</vendor>
</cpu>
# virsh start vm1
error: Failed to start domain vm1
error: the CPU is incompatible with host CPU: Host CPU does not provide required features: hle, rtm, mpx, avx512f, avx512dq, rdseed, adx, smap, clflushopt, clwb, avx512cd, avx512bw, avx512vl, avx512vnni, xsavec, xgetbv1, 3dnowprefetch
All the results are expected; move this bug to be verified.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2019:3723 |