Bug 822148
| Summary: | libvirt should enforce guest CPU configuration | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Eduardo Habkost <ehabkost> | ||||||
| Component: | libvirt | Assignee: | Jiri Denemark <jdenemar> | ||||||
| Status: | CLOSED ERRATA | QA Contact: | Luyao Huang <lhuang> | ||||||
| Severity: | unspecified | Docs Contact: | |||||||
| Priority: | unspecified | ||||||||
| Version: | 7.0 | CC: | cwei, dyuan, gsun, jdenemar, jmiao, juzhang, knoel, lhuang, mzhan, shuang, tburke, xfu, xuzhang | ||||||
| Target Milestone: | rc | Keywords: | Upstream | ||||||
| Target Release: | --- | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | libvirt-3.2.0-1.el7 | Doc Type: | If docs needed, set a value | ||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | |||||||||
| : | 822613 (view as bug list) | Environment: | |||||||
| Last Closed: | 2017-08-01 17:06:41 UTC | Type: | Bug | ||||||
| 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: | 822616, 824987, 824989, 1055532 | ||||||||
| Bug Blocks: | 1179458, 1199452, 1288337 | ||||||||
| Attachments: |
|
||||||||
|
Description
Eduardo Habkost
2012-05-16 13:47:08 UTC
*** Bug 822613 has been marked as a duplicate of this bug. *** Important bugfix for "-cpu enforce" was included on qemu.git master today. See commit 07ca59450c9a0c5df65665ce46aa8487af59a1dd and other patches from the same series.
commit 07ca59450c9a0c5df65665ce46aa8487af59a1dd
Author: Eduardo Habkost <ehabkost>
Date: Mon Jan 7 16:20:48 2013 -0200
target-i386: check/enforce: Check all feature words
This adds the following feature words to the list of flags to be checked
by kvm_check_features_against_host():
- cpuid_7_0_ebx_features
- ext4_features
- kvm_features
- svm_features
This will ensure the "enforce" flag works as it should: it won't allow
QEMU to be started unless every flag that was requested by the user or
defined in the CPU model is supported by the host.
This patch may cause existing configurations where "enforce" wasn't
preventing QEMU from being started to abort QEMU. But that's exactly the
point of this patch: if a flag was not supported by the host and QEMU
wasn't aborting, it was a bug in the "enforce" code.
See RFC at <http://article.gmane.org/gmane.comp.emulators.qemu/204336>. We need feedback from the libvirt team, so we can proceed on a solution that works for libvirt. Reference for how libvirt could use the feature from bug 824987: http://wiki.qemu.org/Features/CPUModels#Interfaces.2Frequirements_for_libvirt pkgs:
libvirt-1.0.6-1.el7.x86_64
qemu-kvm-1.5.0-2.el7.x86_64
1. steps
# lscpu |grep Model\ name
Model name: AMD Opteron(tm) Processor 6128
prepare a domain with following cpu model part:
...
<cpu mode='custom' match='exact'>
<model fallback='allow'>Opteron_G3</model>
<feature policy='require' name='popcnt'/>
<feature policy='require' name='sse4a'/>
<feature policy='require' name='abm'/>
<feature policy='optional' name='monitor'/>
<feature policy='optional' name='rdtscp'/>
</cpu>
...
2. start domain
# virsh start rhel7
Domain rhel7 started
# ps aux|grep qemu
qemu 15493 20.1 1.1 1851552 290696 ? Sl 14:55 0:50 /usr/libexec/qemu-kvm -name rhel7 -S -machine pc-i440fx-1.4,accel=kvm,usb=off -cpu Opteron_G3 -m 1024 -realtime mlock=off -smp 4,sockets=4,cores=1,threads=1 -uuid d45afe60-be16-4e88-a6f2-e40cdcea9136 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/rhel7.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -no-acpi -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x7 -drive file=/var/lib/libvirt/images/rhel72.img,if=none,id=drive-ide0-0-0,format=raw -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=27 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:48:88:34,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -spice port=5900,addr=127.0.0.1,disable-ticketing,seamless-migration=on -vga qxl -global qxl-vga.ram_size=67108864 -global qxl-vga.vram_size=67108864 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
no 'enforce' added.
3. tested with qemu command
# /usr/libexec/qemu-kvm -name rhel7 -S -machine pc-i440fx-1.4,accel=kvm,usb=off -cpu Opteron_G3,-rdtscp,-monitor,enforce -m 1024 -realtime mlock=off -smp 4,sockets=4,cores=1,threads=1
VNC server running on `::1:5900'
it works
A test case from bug 1178850 comment 13: 1. test with host-passthrough cpu mode <cpu mode='host-passthrough'> <feature policy='require' name='tsc-deadline'/> </cpu> # ps axu|grep qemu ...-cpu host,+tsc-deadline... Howerver my host not support tsc-deadline: # cpuid -1 |grep "time stamp counter" time stamp counter deadline = false and this is not right from doc: require Guest creation will fail unless the feature is supported by host CPU. Test if if change the mode to 'host-model' will get error: # virsh start test3 error: Failed to start domain test3 error: unsupported configuration: guest and host CPU are not compatible: Host CPU does not provide required features: tsc-deadline And we won't check if the feature name is valid: # virsh dumpxml test4 |grep -A 5 "cpu mode" <cpu mode='host-passthrough'> <feature policy='require' name='tsc-deadlineaaa'/> <numa> <cell id='0' cpus='0-1' memory='1024000' unit='KiB'/> </numa> </cpu> # virsh start test4 error: Failed to start domain test4 error: internal error: process exited while connecting to monitor: 2015-08-11T01:23:31.988928Z qemu-kvm: warning: CPU(s) not present in any NUMA nodes: 2 3 2015-08-11T01:23:31.989130Z qemu-kvm: warning: All CPU(s) up to maxcpus should be described in NUMA config 2015-08-11T01:23:31.990121Z qemu-kvm: CPU feature tsc-deadlineaaa not found # virsh dumpxml test4 |grep -A 5 "cpu mode" <cpu mode='host-passthrough'> <feature policy='require' name='tsc-deadline,+invtsc'/> <numa> <cell id='0' cpus='0-1' memory='1024000' unit='KiB'/> </numa> </cpu> # virsh start test4 Domain test4 started And Martin suggest add a comment to this bug and we think this could be fixed (or easy to fix) in this bug. Thanks, Luyao *** Bug 1177204 has been marked as a duplicate of this bug. *** Patches sent upstream for review: https://www.redhat.com/archives/libvir-list/2017-March/msg00578.html Finally fixed upstream by:
commit cab2c1af96c4b446e7f0fb72809402302a2560be
Refs: v3.1.0-182-gcab2c1af9
Author: Jiri Denemark <jdenemar>
AuthorDate: Wed Mar 1 14:54:53 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:47 2017 +0100
tests: Switch to sparse initialization of virCPUDef
Signed-off-by: Jiri Denemark <jdenemar>
commit 38567e94dea56eeafa487d754875cdc6a5e776d9
Refs: v3.1.0-183-g38567e94d
Author: Jiri Denemark <jdenemar>
AuthorDate: Thu Mar 2 14:53:18 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
docs: Clarify /domain/cpu/@match description
Signed-off-by: Jiri Denemark <jdenemar>
commit 641b8c721e01dd2a7d0cae7b7f3b7a06e43f9da2
Refs: v3.1.0-184-g641b8c721
Author: Jiri Denemark <jdenemar>
AuthorDate: Wed Mar 1 15:18:22 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
Introduce /domain/cpu/@check XML attribute
The attribute can be used to request a specific way of checking whether
the virtual CPU matches created by the hypervisor matches the
specification in domain XML.
Signed-off-by: Jiri Denemark <jdenemar>
commit fcd56ce86640bf8bc230025a3791593a5bf10507
Refs: v3.1.0-185-gfcd56ce86
Author: Jiri Denemark <jdenemar>
AuthorDate: Wed Mar 1 16:12:07 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Set default values for CPU check attribute
Signed-off-by: Jiri Denemark <jdenemar>
commit e9dbe70110ac2d6ad8264c1c404e5ca4069e0e7b
Refs: v3.1.0-186-ge9dbe7011
Author: Jiri Denemark <jdenemar>
AuthorDate: Fri Mar 10 23:55:59 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Refactor Hyper-V features check
The checks are now in a dedicated qemuProcessVerifyHypervFeatures
function.
In addition to moving the code this patch also fixes a few bugs: the
original code was leaking cpuFeature and the return value of
virCPUDataCheckFeature was not checked properly.
Signed-off-by: Jiri Denemark <jdenemar>
commit d5f47d7d75eefe6afd941f963515cafe865c7ab0
Refs: v3.1.0-187-gd5f47d7d7
Author: Jiri Denemark <jdenemar>
AuthorDate: Sat Mar 11 00:10:56 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Refactor KVM features check
The checks are now in a dedicated qemuProcessVerifyKVMFeatures function.
Signed-off-by: Jiri Denemark <jdenemar>
commit af1ca855454e026395ac1e6f515381ed2f5aa0c4
Refs: v3.1.0-188-gaf1ca8554
Author: Jiri Denemark <jdenemar>
AuthorDate: Sat Mar 11 00:36:55 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Refactor CPU features check
The checks are now in a dedicated qemuProcessVerifyCPUFeatures function.
Signed-off-by: Jiri Denemark <jdenemar>
commit cfeee3373bf2afefe7bbf958af6c00e672756f20
Refs: v3.1.0-189-gcfeee3373
Author: Jiri Denemark <jdenemar>
AuthorDate: Sat Mar 11 00:45:37 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Refactor qemuProcessVerifyGuestCPU
Signed-off-by: Jiri Denemark <jdenemar>
commit 253db85e2d3da7e997dc4860c0009bdb7afbef4c
Refs: v3.1.0-190-g253db85e2
Author: Jiri Denemark <jdenemar>
AuthorDate: Mon Mar 13 10:23:37 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Use ARCH_IS_X86 in qemuMonitorJSONGetGuestCPU
Signed-off-by: Jiri Denemark <jdenemar>
commit 77c9c4f127e983f67561fafcb257fb4c440bd28f
Refs: v3.1.0-191-g77c9c4f12
Author: Jiri Denemark <jdenemar>
AuthorDate: Mon Mar 13 11:00:48 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Ask QEMU for filtered CPU features
qemuMonitorGetGuestCPU can now optionally create CPU data from
filtered-features in addition to feature-words.
Signed-off-by: Jiri Denemark <jdenemar>
commit def9401acb6f1b6a4eefbb8b5c84629811bc309d
Refs: v3.1.0-192-gdef9401ac
Author: Jiri Denemark <jdenemar>
AuthorDate: Mon Mar 13 12:32:02 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Update CPU definition according to QEMU
When starting a domain with custom guest CPU specification QEMU may add
or remove some CPU features. There are several reasons for this, e.g.,
QEMU/KVM does not support some requested features or the definition of
the requested CPU model in libvirt's cpu_map.xml differs from the one
QEMU is using. We can't really avoid this because CPU models are allowed
to change with machine types and libvirt doesn't know (and probably
doesn't even want to know) about such changes.
Thus when we want to make sure guest ABI doesn't change when a domain
gets migrated to another host, we need to update our live CPU definition
according to the CPU QEMU created. Once updated, we will change CPU
checking to VIR_CPU_CHECK_FULL to make sure the virtual CPU created
after migration exactly matches the one on the source.
https://bugzilla.redhat.com/show_bug.cgi?id=822148
https://bugzilla.redhat.com/show_bug.cgi?id=824989
Signed-off-by: Jiri Denemark <jdenemar>
commit 77ca2f6d8f6221f2991c95d74740c8607cd48baf
Refs: v3.1.0-193-g77ca2f6d8
Author: Jiri Denemark <jdenemar>
AuthorDate: Tue Mar 14 15:05:02 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Fri Mar 17 11:50:48 2017 +0100
qemu: Enforce guest CPU specification
When guest CPU definition uses VIR_CPU_CHECK_FULL checks, we need to
make sure QEMU does not add or remove any features.
https://bugzilla.redhat.com/show_bug.cgi?id=822148
https://bugzilla.redhat.com/show_bug.cgi?id=824989
Signed-off-by: Jiri Denemark <jdenemar>
One more patch is needed to fix a possible crash:
commit c74207cb182f0af7ea626579f5be3be48fc9c2d4
Refs: v3.1.0-201-gc74207cb1
Author: Jiri Denemark <jdenemar>
AuthorDate: Mon Mar 20 09:03:58 2017 +0100
Commit: Jiri Denemark <jdenemar>
CommitDate: Mon Mar 20 09:03:58 2017 +0100
qemu: Don't try to update undefined guest CPU
Calling virCPUUpdateLive on a domain with no guest CPU configuration
does not make sense. Especially when doing so would crash libvirtd.
Signed-off-by: Jiri Denemark <jdenemar>
Test with libvirt-3.2.0-6.el7.x86_64:
S1: Use domcapabilities check guest vcpu flags cap
1.
# virsh domcapabilities
<domainCapabilities>
...
<cpu>
<mode name='host-passthrough' supported='yes'/>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='tsc-deadline'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='arat'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='require' name='invtsc'/>
<feature policy='disable' name='rdtscp'/>
<feature policy='disable' name='svm'/>
</mode>
<mode name='custom' supported='yes'>
<model usable='yes'>qemu64</model>
<model usable='yes'>qemu32</model>
<model usable='no'>phenom</model>
<model usable='yes'>pentium3</model>
<model usable='yes'>pentium2</model>
<model usable='yes'>pentium</model>
<model usable='no'>n270</model>
<model usable='yes'>kvm64</model>
<model usable='yes'>kvm32</model>
<model usable='yes'>cpu64-rhel6</model>
<model usable='no'>coreduo</model>
<model usable='no'>core2duo</model>
<model usable='no'>athlon</model>
<model usable='yes'>Westmere</model>
<model usable='no'>Skylake-Client</model>
<model usable='no'>SandyBridge</model>
<model usable='yes'>Penryn</model>
<model usable='yes'>Opteron_G5</model>
<model usable='yes'>Opteron_G4</model>
<model usable='yes'>Opteron_G3</model>
<model usable='yes'>Opteron_G2</model>
<model usable='yes'>Opteron_G1</model>
<model usable='yes'>Nehalem</model>
<model usable='no'>IvyBridge</model>
<model usable='no'>Haswell</model>
<model usable='no'>Haswell-noTSX</model>
<model usable='yes'>Conroe</model>
<model usable='no'>Broadwell</model>
<model usable='no'>Broadwell-noTSX</model>
<model usable='yes'>486</model>
</mode>
</cpu>
...
2. define and start a guest with cpu model xml in domcapabilities:
# virsh dumpxml r7
<cpu mode='host-model' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<feature policy='require' name='vme'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='tsc-deadline'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='arat'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='require' name='invtsc'/>
<feature policy='disable' name='rdtscp'/>
<feature policy='disable' name='svm'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
# virsh start r7
Domain r7 started
3. recheck xml:
# virsh dumpxml r7
...
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='tsc-deadline'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='arat'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='disable' name='rdtscp'/>
<feature policy='disable' name='svm'/>
<feature policy='require' name='invtsc'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
...
S2: start a guest with host-model:
1. guest xml
<cpu mode='host-model' check='full'>
<model fallback='allow'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
2. start guest
# virsh start r7
Domain r7 started
3. recheck xml:
# virsh dumpxml r7
...
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='tsc-deadline'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='arat'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='disable' name='rdtscp'/>
<feature policy='disable' name='svm'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
...
4. check qemu command line
# ps aux|grep qemu
qemu 17388 20.3 1.4 2029600 460316 ? Sl 23:26 0:25 .... -cpu Opteron_G5,vme=on,x2apic=on,tsc-deadline=on,hypervisor=on,arat=on,tsc_adjust=on,bmi1=on,mmxext=on,fxsr_opt=on,cmp_legacy=on,cr8legacy=on,osvw=on,rdtscp=off,svm=off
5. login guest check guest cpu flags:
# lscpu |grep Flags
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb lm art rep_good nopl extd_apicid pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw xop fma4 tbm tsc_adjust bmi1 arat
S3: start a guest with host-model and a guest unsupported flags:
1. check is none (no check from libvirt side)
# virsh dumpxml r7 --inactive |grep -A5 host-model
<cpu mode='host-model' check='none'>
<model fallback='allow'/>
<feature policy='require' name='svm'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
# virsh start r7
Domain r7 started
# virsh dumpxml r7 |grep -A20 custom
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='tsc-deadline'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='arat'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='disable' name='rdtscp'/>
<feature policy='disable' name='svm'/> <--- move to disable
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
# ps aux|grep qemu
qemu 17954 13.7 1.2 2021404 404260 ? Sl 23:32 0:25 .... -cpu Opteron_G5,vme=on,x2apic=on,tsc-deadline=on,hypervisor=on,arat=on,tsc_adjust=on,bmi1=on,mmxext=on,fxsr_opt=on,cmp_legacy=on,cr8legacy=on,osvw=on,rdtscp=off,svm=on
2. check is partial (libvirt will check if feature name is supported by host):
# virsh dumpxml r7 |grep -A3 host-model
<cpu mode='host-model' check='partial'>
<model fallback='allow'/>
<feature policy='require' name='mpx'/>
<numa>
# virsh capabilities |grep mpx
# virsh start r7
error: Failed to start domain r7
error: the CPU is incompatible with host CPU: Host CPU does not provide required features: mpx
3. check is full (guest fail to start if the vcpu flags not match xml):
# virsh dumpxml r7 |grep -A3 host-model
<cpu mode='host-model' check='full'>
<model fallback='allow'/>
<feature policy='require' name='svm'/>
<numa>
# virsh start r7
error: Failed to start domain r7
error: operation failed: guest CPU doesn't match specification: missing features: svm
Test with libvirt-3.2.0-6.el7.x86_64:
S4: host-passthrough + (check=full)
# virsh dumpxml r7 |grep -A3 host-
<cpu mode='host-passthrough' check='full'>
<feature policy='require' name='svms'/> <---- not exist
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
# virsh start r7
error: Failed to start domain r7
error: internal error: qemu unexpectedly closed the monitor: 2017-05-25T03:58:44.618947Z qemu-kvm: -chardev pty,id=charserial0: char device redirected to /dev/pts/2 (label charserial0)
2017-05-25T03:58:44.619426Z qemu-kvm: -chardev pty,id=charredir0: char device redirected to /dev/pts/3 (label charredir0)
2017-05-25T03:58:44.632332Z qemu-kvm: warning: CPU(s) not present in any NUMA nodes: 6 7 8 9
2017-05-25T03:58:44.632354Z qemu-kvm: warning: All CPU(s) up to maxcpus should be described in NUMA config
2017-05-25T03:58:44.633322Z qemu-kvm: can't apply global host-x86_64-cpu.svms=on: Property '.svms' not found
Libvirt didn't give any check for this
S5: Tcg + host-model + check=full
# virsh dumpxml r7
<domain type='qemu'>
...
<cpu mode='host-model' check='full'>
<model fallback='allow'/>
<feature policy='require' name='rtm'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
...
# virsh start r7
error: Failed to start domain r7
error: operation failed: guest CPU doesn't match specification: missing features: rtm
# virsh dumpxml r7
<domain type='qemu'>
...
<cpu mode='host-model' check='full'>
<model fallback='allow'/>
<feature policy='require' name='svm'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
...
# virsh start r7
Domain r7 started
# virsh dumpxml r7
...
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G4</model>
<vendor>AMD</vendor>
<feature policy='require' name='acpi'/>
<feature policy='require' name='ss'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='movbe'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='arat'/>
<feature policy='require' name='fsgsbase'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='smep'/>
<feature policy='require' name='bmi2'/>
<feature policy='require' name='erms'/>
<feature policy='require' name='mpx'/>
<feature policy='require' name='adx'/>
<feature policy='require' name='smap'/>
<feature policy='require' name='clflushopt'/>
<feature policy='require' name='pku'/>
<feature policy='require' name='ospke'/>
<feature policy='require' name='xsaveopt'/>
<feature policy='require' name='xgetbv1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='3dnowext'/>
<feature policy='require' name='3dnow'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='disable' name='avx'/>
<feature policy='disable' name='misalignsse'/>
<feature policy='disable' name='3dnowprefetch'/>
<feature policy='disable' name='xop'/>
<feature policy='disable' name='fma4'/>
<feature policy='require' name='svm'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
...
# ps aux|grep qemu
qemu 20331 101 1.2 2378380 402496 ? Sl 00:12 0:29 ... -cpu Opteron_G4,acpi=on,ss=on,monitor=on,movbe=on,hypervisor=on,arat=on,fsgsbase=on,bmi1=on,smep=on,bmi2=on,erms=on,mpx=on,adx=on,smap=on,clflushopt=on,pku=on,ospke=on,xsaveopt=on,xgetbv1=on,mmxext=on,3dnowext=on,3dnow=on,cr8legacy=on,avx=off,misalignsse=off,3dnowprefetch=off,xop=off,fma4=off,svm=on
IN GUEST:
Flags: fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush acpi mmx fxsr sse sse2 ss syscall nx mmxext pdpe1gb lm 3dnowext 3dnow art rep_good nopl extd_apicid eagerfpu pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 movbe popcnt aes xsave hypervisor lahf_lm svm cr8_legacy abm sse4a fsgsbase bmi1 smep bmi2 erms mpx adx smap clflushopt xsaveopt xgetbv1 arat
S6: TCG + host-model + invalid flags
# virsh dumpxml r7
<domain type='qemu'>
...
<cpu mode='host-model' check='full'>
<model fallback='allow'/>
<feature policy='require' name='svmss'/>
...
# virsh start r7
error: Failed to start domain r7
error: internal error: qemu unexpectedly closed the monitor: 2017-05-25T05:53:12.120536Z qemu-kvm: -chardev pty,id=charserial0: char device redirected to /dev/pts/2 (label charserial0)
2017-05-25T05:53:12.120993Z qemu-kvm: -chardev pty,id=charredir0: char device redirected to /dev/pts/3 (label charredir0)
2017-05-25T05:53:12.132015Z qemu-kvm: warning: CPU(s) not present in any NUMA nodes: 6 7 8 9
2017-05-25T05:53:12.132034Z qemu-kvm: warning: All CPU(s) up to maxcpus should be described in NUMA config
2017-05-25T05:53:12.132811Z qemu-kvm: can't apply global Opteron_G4-x86_64-cpu.svmss=on: Property '.svmss' not found
Libvirt didn't check if this flags is valid
Test migration between 2 host(both install libvirt-3.2.0-6.el7.x86_64):
S7: live migrate + host-model + kvm
guest cpu xml
<cpu mode='host-model' check='partial'>
<model fallback='allow'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
# virsh dumpxml r7
...
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='disable' name='ht'/>
<feature policy='disable' name='monitor'/>
<feature policy='disable' name='osxsave'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='disable' name='extapic'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='disable' name='ibs'/>
<feature policy='disable' name='skinit'/>
<feature policy='disable' name='wdt'/>
<feature policy='disable' name='lwp'/>
<feature policy='disable' name='tce'/>
<feature policy='disable' name='nodeid_msr'/>
<feature policy='disable' name='topoext'/>
<feature policy='disable' name='perfctr_core'/>
<feature policy='disable' name='perfctr_nb'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='hypervisor'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
# virsh migrate r7 qemu+ssh://target/system --live
In Target host:
# virsh dumpxml r7
...
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='disable' name='ht'/>
<feature policy='disable' name='monitor'/>
<feature policy='disable' name='osxsave'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='disable' name='extapic'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='disable' name='ibs'/>
<feature policy='disable' name='skinit'/>
<feature policy='disable' name='wdt'/>
<feature policy='disable' name='lwp'/>
<feature policy='disable' name='tce'/>
<feature policy='disable' name='nodeid_msr'/>
<feature policy='disable' name='topoext'/>
<feature policy='disable' name='perfctr_core'/>
<feature policy='disable' name='perfctr_nb'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='hypervisor'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
...
S8: live migrate + custom + tcg
<cpu mode='custom' match='exact' check='partial'>
<model fallback='forbid'>Opteron_G5</model>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
# virsh start r7
Domain r7 started
# virsh dumpxml r7
...
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<feature policy='require' name='vme'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='hypervisor'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
...
# virsh migrate r7 qemu+ssh://target/system --live
In Target host:
# virsh dumpxml r7
...
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<feature policy='require' name='vme'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='hypervisor'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
...
S9: live migratation + TCG + host-model
pass
S10: live migratation + TCG + custom
pass
Test cross migration (libvirt-2.0.0-10 <-> libvirt-3.2.0-6):
S11: from a old libvirt to a new libvirt + kvm guest + host-model
<cpu mode='host-model'>
<model fallback='allow'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
# virsh start r7
Domain r7 started
# virsh dumpxml r7 --update-cpu
...
<cpu mode='host-model' match='exact'>
<model fallback='allow'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='osxsave'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='require' name='extapic'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='require' name='ibs'/>
<feature policy='require' name='skinit'/>
<feature policy='require' name='wdt'/>
<feature policy='require' name='lwp'/>
<feature policy='require' name='tce'/>
<feature policy='require' name='nodeid_msr'/>
<feature policy='require' name='topoext'/>
<feature policy='require' name='perfctr_core'/>
<feature policy='require' name='perfctr_nb'/>
...
# virsh migrate r7 qemu+ssh://target/system --live
In Target host:
# virsh dumpxml r7
...
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='disable' name='ht'/>
<feature policy='disable' name='monitor'/>
<feature policy='disable' name='osxsave'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='disable' name='extapic'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='disable' name='ibs'/>
<feature policy='disable' name='skinit'/>
<feature policy='disable' name='wdt'/>
<feature policy='disable' name='lwp'/>
<feature policy='disable' name='tce'/>
<feature policy='disable' name='nodeid_msr'/>
<feature policy='disable' name='topoext'/>
<feature policy='disable' name='perfctr_core'/>
<feature policy='disable' name='perfctr_nb'/>
<feature policy='require' name='x2apic'/>
<feature policy='require' name='hypervisor'/>
...
Migrate back
# virsh migrate r7 qemu+ssh://lhuang/system --live
root@lhuang's password:
error: unsupported configuration: guest and host CPU are not compatible: Host CPU does not provide required features: x2apic, hypervisor
S12: from a new libvirt to a old libvirt + kvm guest + host-model
# virsh migrate r7-mig qemu+ssh://lhuang/system --live
error: unsupported configuration: guest and host CPU are not compatible: Host CPU does not provide required features: x2apic, tsc-deadline, hypervisor, arat, tsc_adjust
S13: from a old libvirt to a new libvirt + kvm guest + custom
like S11 migrate success but fail to migrate back
S14: from a new libvirt to a old libvirt + kvm guest + custom
like S12 fail to migrate
BTW, these cross migration issues are tracked in bug 1441662. S15: from a old libvirt to a new libvirt + tcg guest + host-model
Guest xml:
# virsh dumpxml r7-mig
<domain type='qemu'>
...
<cpu mode='host-model'>
<model fallback='allow'/>
...
# virsh start r7-mig
Domain r7-mig started
# virsh migrate r7-mig qemu+ssh://target/system --live
error: the CPU is incompatible with host CPU: Host CPU does not provide required features: vme, ht, fma, osxsave, avx, f16c, fxsr_opt, cmp_legacy, extapic, misalignsse, 3dnowprefetch, osvw, ibs, xop, skinit, wdt, lwp, fma4, tce, nodeid_msr, tbm, topoext, perfctr_core, perfctr_nb
S16: from a new libvirt to a old libvirt + tcg guest + host-model
Migrate pass and can migrate back
S17: from a old libvirt to a new libvirt + tcg guest + custom
Migrate pass and can migrate back
S18: from a new libvirt to a old libvirt + tcg guest + custom
Migrate pass and can migrate back
Hi Jirka, (In reply to Jiri Denemark from comment #22) > BTW, these cross migration issues are tracked in bug 1441662. Thanks for your point out, hope it won't be too noisy that i add 5 comments in a short time. And comment 18-21,23 is some my test result for this patches, the problem list in comment 21 and comment 23 will be tracked in bug 1441662. And i have a question about libvirt didn't valid the guest cpu flags name when the cpu mode is host-passthrough or the guest is a tcg guest (see S6 + S4). Could you please check S6 and S4 is expected ? Thanks in advance for your answer. Test with qemu-kvm-1.5.3-139.el7.x86_64 and libvirt-3.2.0-6.el7.x86_64, the
virsh domcapabilities will show unknown in model usable and show the support feature which from cpu_map.xml.
virsh # domcapabilities
...
<cpu>
<mode name='host-passthrough' supported='yes'/>
<mode name='host-model' supported='yes'>
<model fallback='allow'>Opteron_G5</model>
<vendor>AMD</vendor>
<feature policy='require' name='vme'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='osxsave'/>
<feature policy='require' name='bmi1'/>
<feature policy='require' name='mmxext'/>
<feature policy='require' name='fxsr_opt'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='require' name='extapic'/>
<feature policy='require' name='cr8legacy'/>
<feature policy='require' name='osvw'/>
<feature policy='require' name='ibs'/>
<feature policy='require' name='skinit'/>
<feature policy='require' name='wdt'/>
<feature policy='require' name='lwp'/>
<feature policy='require' name='tce'/>
<feature policy='require' name='nodeid_msr'/>
<feature policy='require' name='topoext'/>
<feature policy='require' name='perfctr_core'/>
<feature policy='require' name='perfctr_nb'/>
<feature policy='require' name='invtsc'/>
</mode>
<mode name='custom' supported='yes'>
<model usable='unknown'>Opteron_G5</model>
<model usable='unknown'>Opteron_G4</model>
<model usable='unknown'>Opteron_G3</model>
<model usable='unknown'>Opteron_G2</model>
<model usable='unknown'>Opteron_G1</model>
<model usable='unknown'>Skylake-Client</model>
<model usable='unknown'>Broadwell</model>
<model usable='unknown'>Haswell</model>
<model usable='unknown'>IvyBridge</model>
<model usable='unknown'>SandyBridge</model>
<model usable='unknown'>Westmere</model>
<model usable='unknown'>Nehalem</model>
<model usable='unknown'>Penryn</model>
<model usable='unknown'>Conroe</model>
<model usable='unknown'>cpu64-rhel6</model>
<model usable='unknown'>n270</model>
<model usable='unknown'>athlon</model>
<model usable='unknown'>pentium3</model>
<model usable='unknown'>pentium2</model>
<model usable='unknown'>pentium</model>
<model usable='unknown'>486</model>
<model usable='unknown'>coreduo</model>
<model usable='unknown'>kvm32</model>
<model usable='unknown'>qemu32</model>
<model usable='unknown'>kvm64</model>
<model usable='unknown'>core2duo</model>
<model usable='unknown'>phenom</model>
<model usable='unknown'>qemu64</model>
</mode>
</cpu>
...
And Retest from S1 - S14,
S1: Fail to start guest, since the cpu xml in domcapabilities output not match guest
S2: Fail to start guest
# virsh start r7
error: Failed to start domain r7
error: operation failed: guest CPU doesn't match specification: extra features: x2apic,hypervisor, missing features: ht,monitor,osxsave,svm,extapic,ibs,skinit,wdt,lwp,tce,nodeid_msr,topoext,perfctr_core,perfctr_nb
S3: The same
S4: libvirt check the cpu flags
# virsh start r7
error: Failed to start domain r7
error: internal error: Unknown CPU feature svmss
S5: Libvirt report a another flags instead of rtm
# virsh start r7
error: Failed to start domain r7
error: operation failed: guest CPU doesn't match specification: extra features: hypervisor
S6: libvirt check the cpu flags
# virsh start r7
error: Failed to start domain r7
error: internal error: Unknown CPU feature svmm
S7-S10: the same
S11-S14: the same
S15: Migrate success
S16-S17: The same
Hi Jirka, One more question: I have test with a old qemu (qemu-kvm-1.5.3-139.el7.x86_64) and found some test result is different with 2.9.0 qemu test result and list them in comment 25. Could you please help to check the difference is expected in comment 25 ? Thanks in advance for your answer. (In reply to Luyao Huang from comment #24) > And i have a question about libvirt didn't valid the guest cpu flags name > when the cpu mode is host-passthrough or the guest is a tcg guest (see S6 + > S4). Could you please check S6 and S4 is expected ? Yeah, that's expected, libvirt is not supposed to cross check the guest CPU with host CPU for TCG guests or when the guest CPU uses host-passthrough mode. However, I think we should still validate that the XML uses valid feature names from our cpu_map.xml. In other words, we should complain about svmss since it is unknown to libvirt. Please, file a new bz for this. Retest with libvirt-3.2.0-9.el7.x86_64, qemu-kvm-rhev-2.9.0-9.el7.x86_64 and qemu-kvm-1.5.3-140.el7 with the same steps (except migration) in comment 18-23, get the same result. Migration test will been checked in bug 1441662. And the left issues according to comment 27 will been tracked in a new bug. Move this bug to verify. (In reply to Jiri Denemark from comment #27) > (In reply to Luyao Huang from comment #24) > > And i have a question about libvirt didn't valid the guest cpu flags name > > when the cpu mode is host-passthrough or the guest is a tcg guest (see S6 + > > S4). Could you please check S6 and S4 is expected ? > > Yeah, that's expected, libvirt is not supposed to cross check the guest CPU > with host CPU for TCG guests or when the guest CPU uses host-passthrough > mode. However, I think we should still validate that the XML uses valid > feature names from our cpu_map.xml. In other words, we should complain about > svmss since it is unknown to libvirt. Please, file a new bz for this. Thanks a lot for your reply, i have filed a new bug 1460086 to track this problem. (In reply to Luyao Huang from comment #25) > Test with qemu-kvm-1.5.3-139.el7.x86_64 and libvirt-3.2.0-6.el7.x86_64, > the virsh domcapabilities will show unknown in model usable Correct, 1.5.3 is too old to provide the usability info for each model. > S1: Fail to start guest, since the cpu xml in domcapabilities output not match guest > S2: Fail to start guest Oh yeah, this is expected. Using check='full' with a CPU model which didn't come from QEMU (i.e., the CPU is reported with fallback='allow' in domcapabilities) will always fail. You should be able to start the domain with check='partial' though. > S4: libvirt check the cpu flags Hmm, I'm not sure why this would be any different. Could you provide more details (such as domain XML and libvirtd logs)? > S5: Libvirt report a another flags instead of rtm That's expected, as I said check='full' it not going to play well with host-model on old QEMU. > S6: libvirt check the cpu flags The same as S4 above, more details please. (In reply to Jiri Denemark from comment #30) > (In reply to Luyao Huang from comment #25) > > Test with qemu-kvm-1.5.3-139.el7.x86_64 and libvirt-3.2.0-6.el7.x86_64, > > the virsh domcapabilities will show unknown in model usable > > Correct, 1.5.3 is too old to provide the usability info for each model. > > > S1: Fail to start guest, since the cpu xml in domcapabilities output not match guest > > S2: Fail to start guest > > Oh yeah, this is expected. Using check='full' with a CPU model which didn't > come from QEMU (i.e., the CPU is reported with fallback='allow' in > domcapabilities) will always fail. You should be able to start the domain > with > check='partial' though. Got it > > > S4: libvirt check the cpu flags > > Hmm, I'm not sure why this would be any different. Could you provide more > details (such as domain XML and libvirtd logs)? > I will add the log and xml in another comment. > > S5: Libvirt report a another flags instead of rtm > > That's expected, as I said check='full' it not going to play well with > host-model on old QEMU. > I see > > S6: libvirt check the cpu flags > > The same as S4 above, more details please. Thanks a lot for your reply Created attachment 1286917 [details]
libvirtd log of S4
and xml:
<domain type='kvm'>
<name>r7</name>
<uuid>f816b705-eeac-41b9-a871-b809044dd4a1</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static' current='5'>10</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='host-passthrough' check='full'>
<feature policy='require' name='svmss'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<pm>
<suspend-to-mem enabled='yes'/>
<suspend-to-disk enabled='yes'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/RHEL-7.4-x86_64-latest.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<interface type='network'>
<mac address='52:54:00:af:19:fb'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</interface>
<serial type='pty'>
<target type='pci-serial' port='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/123.sock'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0' port='2'/>
</channel>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<redirdev bus='usb' type='pty'>
<address type='usb' bus='0' port='2'/>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='3'/>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</memballoon>
</devices>
</domain>
Created attachment 1286918 [details]
libvirtd log for S6 for debuging
and xml:
<domain type='qemu'>
<name>r7</name>
<uuid>f816b705-eeac-41b9-a871-b809044dd4a1</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static' current='5'>10</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='host-model' check='full'>
<model fallback='allow'/>
<feature policy='require' name='svmss'/>
<numa>
<cell id='0' cpus='0-2' memory='524288' unit='KiB'/>
<cell id='1' cpus='3-5' memory='524288' unit='KiB'/>
</numa>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<pm>
<suspend-to-mem enabled='yes'/>
<suspend-to-disk enabled='yes'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/RHEL-7.4-x86_64-latest.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<interface type='network'>
<mac address='52:54:00:af:19:fb'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</interface>
<serial type='pty'>
<target type='pci-serial' port='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/123.sock'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0' port='2'/>
</channel>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<redirdev bus='usb' type='pty'>
<address type='usb' bus='0' port='2'/>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='3'/>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</memballoon>
</devices>
</domain>
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/RHEA-2017:1846 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/RHEA-2017:1846 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/RHEA-2017:1846 |