Bug 1444850

Summary: can't migrate VM because of arat added to sandy bridge on 7.4 and not on 7.3
Product: Red Hat Enterprise Linux 7 Reporter: Lucie Leistnerova <lleistne>
Component: libvirtAssignee: Jiri Denemark <jdenemar>
Status: CLOSED DUPLICATE QA Contact: chhu
Severity: high Docs Contact:
Priority: unspecified    
Version: 7.4CC: bugs, dyuan, lhuang, lleistne, michal.skrivanek, rbalakri, tjelinek, xuzhang, zpeng
Target Milestone: pre-dev-freeze   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-05-10 12:58:23 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:
Attachments:
Description Flags
vdsm.log
none
libvirt xmls from h1
none
libvirt xmls from h2 none

Description Lucie Leistnerova 2017-04-24 12:25:13 UTC
Created attachment 1273604 [details]
vdsm.log

Description of problem:
I have 4.2 (rhel 7.4) and 4.1 (rhel 7.3) hosts in cluster (compatibility version 4.1). Migration from 4.2 to 4.1 ends with error:
libvirtError: unsupported configuration: guest and host CPU are not compatible: Host CPU does not provide required features: arat

Version-Release number of selected component (if applicable):
host 4.2:
vdsm-4.20.0-646.git4252f6d.el7.centos.x86_64
libvirt-lock-sanlock-3.2.0-3.el7.x86_64
qemu-kvm-ev-2.6.0-28.el7_3.6.1.x86_64
host 4.1:
vdsm-4.19.10.1-1.el7.centos.x86_64
libvirt-lock-sanlock-2.0.0-10.el7_3.5.x86_64
qemu-kvm-ev-2.6.0-28.el7_3.6.1.x86_64

How reproducible: always


Steps to Reproduce:
1. install 4.2 and 4.1 host, add them to 4.1 engine
2. create VM and run it on 4.2 host
3. try to migrate to 4.1 host

Actual results: migration fails, vdsm log attached


Expected results: migration is successful


Additional info:
Migration from 4.1 to 4.2 is OK.
I was testing 7.4 rhel and need to install ovirt 4.2 on it, because rhvm is not yet build. I hope it doesn't matter.

Comment 1 Yaniv Kaul 2017-04-25 06:53:21 UTC
Does it work with 4.1 and 7.4 host?

Comment 2 Lucie Leistnerova 2017-04-25 11:21:42 UTC
I could not install vdsm 4.1 on 7.4 rhel because of dependencies, some packages have higher version than vdsm requires (e.g. systemd).

Comment 3 Yaniv Kaul 2017-04-25 12:08:18 UTC
(In reply to Lucie Leistnerova from comment #2)
> I could not install vdsm 4.1 on 7.4 rhel because of dependencies, some
> packages have higher version than vdsm requires (e.g. systemd).

Higher is a problem? Strange. Please open a separate bug on this.

Comment 4 Lucie Leistnerova 2017-04-25 14:28:36 UTC
I went again through the dependencies and it was not vdsm fault but rhel 7.4 build. I used other one and there was it correct. I had to exclude libvirt and install 2.0 version manually.

Migration from vdsm 4.1 rhel 7.4 was successful.

Comment 5 Tomas Jelinek 2017-04-25 15:18:11 UTC
It seems like a libvirt issue.

There are 2 hosts involved, h1 and h2.
On both hosts we create the CPU by:

    <cpu match="exact">
        <model>SandyBridge</model>
        <topology cores="1" sockets="16" threads="1" />
        <numa>
            <cell cpus="0" memory="2097152" />
        </numa>
    </cpu>

as a result, it creates:
dumpxml on h1:
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>SandyBridge</model>
    <topology sockets='16' cores='1' threads='1'/>
    <numa>
      <cell id='0' cpus='0' memory='2097152' unit='KiB'/>
    </numa>
  </cpu>

and on h2:

  <cpu mode='custom' match='exact' check='full'>
    <model fallback='forbid'>SandyBridge</model>
    <topology sockets='16' cores='1' threads='1'/>
    <feature policy='require' name='vme'/>
    <feature policy='require' name='hypervisor'/>
    <feature policy='require' name='arat'/>
    <feature policy='require' name='xsaveopt'/>
    <feature policy='disable' name='rdtscp'/>
    <numa>
      <cell id='0' cpus='0' memory='2097152' unit='KiB'/>
    </numa>
  </cpu>

When try to migrate this VM from h2 to h1, libvirt complains that:
0.963+0000: 15568: error : virNetClientProgramDispatchError:177 : unsupported configuration: guest and host CPU are not compatible: Host CPU does not provide required features: arat

some more details about hosts:

h1:
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)

rpm -qa | grep libvirt
libvirt-client-2.0.0-10.el7_3.5.x86_64
libvirt-python-2.0.0-2.el7.x86_64
libvirt-daemon-driver-interface-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-kvm-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-driver-network-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-config-nwfilter-2.0.0-10.el7_3.5.x86_64
libvirt-lock-sanlock-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-driver-nodedev-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-driver-qemu-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-driver-nwfilter-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-driver-secret-2.0.0-10.el7_3.5.x86_64
libvirt-daemon-driver-storage-2.0.0-10.el7_3.5.x86_64




h2: 
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 Beta (Maipo)

rpm -qa | grep libvirt
libvirt-daemon-driver-network-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-logical-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-iscsi-3.2.0-3.el7.x86_64
libvirt-daemon-driver-interface-3.2.0-3.el7.x86_64
libvirt-lock-sanlock-3.2.0-3.el7.x86_64
libvirt-python-3.2.0-1.el7.x86_64
libvirt-libs-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-core-3.2.0-3.el7.x86_64
libvirt-daemon-driver-nwfilter-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-scsi-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-gluster-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-rbd-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-disk-3.2.0-3.el7.x86_64
libvirt-daemon-driver-secret-3.2.0-3.el7.x86_64
libvirt-daemon-driver-nodedev-3.2.0-3.el7.x86_64
libvirt-daemon-config-nwfilter-3.2.0-3.el7.x86_64
libvirt-client-3.2.0-3.el7.x86_64
libvirt-daemon-3.2.0-3.el7.x86_64
libvirt-daemon-driver-qemu-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-mpath-3.2.0-3.el7.x86_64
libvirt-daemon-driver-storage-3.2.0-3.el7.x86_64
libvirt-daemon-kvm-3.2.0-3.el7.x86_64

the more full logs attached

Comment 7 Tomas Jelinek 2017-04-25 15:21:02 UTC
Created attachment 1273950 [details]
libvirt xmls from h1

Comment 8 Tomas Jelinek 2017-04-25 15:22:15 UTC
Created attachment 1273951 [details]
libvirt xmls from h2

Comment 9 Jiri Denemark 2017-05-10 12:58:23 UTC
So arat is just another CPU feature which QEMU will automatically add to the guest CPU (for domains with new enough machine type) even if the host CPU does not support it. In other words, this is a duplicate of bug 1441662.

*** This bug has been marked as a duplicate of bug 1441662 ***