Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-52314

Fail to migrate a vm which used a custom cpu model with updated xml option

    • Yes
    • Moderate
    • sst_virtualization
    • ssg_virtualization
    • 5
    • Dev ack
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • x86_64
    • 10.9.0
    • None

      What were you trying to do that didn't work?

      Fail to migrate a vm which used a custom cpu model with updated xml option

      Please provide the package NVR for which bug is seen:

      libvirt-10.5.0-4.el9.x86_64

      How reproducible:

      100%

      Steps to reproduce

      1. use hypervisor-cpu-baseline to get a baseline cpu and caps.xml contains domcapabilities xml from 2 host which have different cpu
      # virsh hypervisor-cpu-baseline caps.xml
      <cpu mode='custom' match='exact'>
        <model fallback='forbid'>Cooperlake</model>
        <vendor>Intel</vendor>
        <maxphysaddr mode='passthrough' limit='46'/>
        <feature policy='require' name='vmx'/>
        <feature policy='require' name='pdcm'/>
        <feature policy='require' name='hypervisor'/>
        <feature policy='require' name='ss'/>
        <feature policy='require' name='tsc_adjust'/>
        <feature policy='require' name='umip'/>
        <feature policy='require' name='md-clear'/>
        <feature policy='require' name='flush-l1d'/>
        <feature policy='require' name='xsaves'/>
        <feature policy='require' name='invtsc'/>
        <feature policy='require' name='ibpb'/>
        <feature policy='require' name='ibrs'/>
        <feature policy='require' name='amd-stibp'/>
        <feature policy='require' name='amd-ssbd'/>
        <feature policy='require' name='tsx-ctrl'/>
        <feature policy='require' name='sbdr-ssdp-no'/>
        <feature policy='require' name='psdp-no'/>
        <feature policy='require' name='fb-clear'/>
        <feature policy='require' name='gds-no'/>
        <feature policy='require' name='vmx-ins-outs'/>
        <feature policy='require' name='vmx-true-ctls'/>
        <feature policy='require' name='vmx-store-lma'/>
        <feature policy='require' name='vmx-activity-hlt'/>
        <feature policy='require' name='vmx-activity-wait-sipi'/>
        <feature policy='require' name='vmx-vmwrite-vmexit-fields'/>
        <feature policy='require' name='vmx-apicv-xapic'/>
        <feature policy='require' name='vmx-ept'/>
        <feature policy='require' name='vmx-desc-exit'/>
        <feature policy='require' name='vmx-rdtscp-exit'/>
        <feature policy='require' name='vmx-apicv-x2apic'/>
        <feature policy='require' name='vmx-vpid'/>
        <feature policy='require' name='vmx-wbinvd-exit'/>
        <feature policy='require' name='vmx-unrestricted-guest'/>
        <feature policy='require' name='vmx-apicv-register'/>
        <feature policy='require' name='vmx-apicv-vid'/>
        <feature policy='require' name='vmx-rdrand-exit'/>
        <feature policy='require' name='vmx-invpcid-exit'/>
        <feature policy='require' name='vmx-vmfunc'/>
        <feature policy='require' name='vmx-shadow-vmcs'/>
        <feature policy='require' name='vmx-rdseed-exit'/>
        <feature policy='require' name='vmx-pml'/>
        <feature policy='require' name='vmx-xsaves'/>
        <feature policy='require' name='vmx-tsc-scaling'/>
        <feature policy='require' name='vmx-ept-execonly'/>
        <feature policy='require' name='vmx-page-walk-4'/>
        <feature policy='require' name='vmx-ept-2mb'/>
        <feature policy='require' name='vmx-ept-1gb'/>
        <feature policy='require' name='vmx-invept'/>
        <feature policy='require' name='vmx-eptad'/>
        <feature policy='require' name='vmx-invept-single-context'/>
        <feature policy='require' name='vmx-invept-all-context'/>
        <feature policy='require' name='vmx-invvpid'/>
        <feature policy='require' name='vmx-invvpid-single-addr'/>
        <feature policy='require' name='vmx-invvpid-all-context'/>
        <feature policy='require' name='vmx-intr-exit'/>
        <feature policy='require' name='vmx-nmi-exit'/>
        <feature policy='require' name='vmx-vnmi'/>
        <feature policy='require' name='vmx-preemption-timer'/>
        <feature policy='require' name='vmx-posted-intr'/>
        <feature policy='require' name='vmx-vintr-pending'/>
        <feature policy='require' name='vmx-tsc-offset'/>
        <feature policy='require' name='vmx-hlt-exit'/>
        <feature policy='require' name='vmx-invlpg-exit'/>
        <feature policy='require' name='vmx-mwait-exit'/>
        <feature policy='require' name='vmx-rdpmc-exit'/>
        <feature policy='require' name='vmx-rdtsc-exit'/>
        <feature policy='require' name='vmx-cr3-load-noexit'/>
        <feature policy='require' name='vmx-cr3-store-noexit'/>
        <feature policy='require' name='vmx-cr8-load-exit'/>
        <feature policy='require' name='vmx-cr8-store-exit'/>
        <feature policy='require' name='vmx-flexpriority'/>
        <feature policy='require' name='vmx-vnmi-pending'/>
        <feature policy='require' name='vmx-movdr-exit'/>
        <feature policy='require' name='vmx-io-exit'/>
        <feature policy='require' name='vmx-io-bitmap'/>
        <feature policy='require' name='vmx-mtf'/>
        <feature policy='require' name='vmx-msr-bitmap'/>
        <feature policy='require' name='vmx-monitor-exit'/>
        <feature policy='require' name='vmx-pause-exit'/>
        <feature policy='require' name='vmx-secondary-ctls'/>
        <feature policy='require' name='vmx-exit-nosave-debugctl'/>
        <feature policy='require' name='vmx-exit-load-perf-global-ctrl'/>
        <feature policy='require' name='vmx-exit-ack-intr'/>
        <feature policy='require' name='vmx-exit-save-pat'/>
        <feature policy='require' name='vmx-exit-load-pat'/>
        <feature policy='require' name='vmx-exit-save-efer'/>
        <feature policy='require' name='vmx-exit-load-efer'/>
        <feature policy='require' name='vmx-exit-save-preemption-timer'/>
        <feature policy='require' name='vmx-entry-noload-debugctl'/>
        <feature policy='require' name='vmx-entry-ia32e-mode'/>
        <feature policy='require' name='vmx-entry-load-perf-global-ctrl'/>
        <feature policy='require' name='vmx-entry-load-pat'/>
        <feature policy='require' name='vmx-entry-load-efer'/>
        <feature policy='require' name='vmx-eptp-switching'/>
        <feature policy='disable' name='hle'/>
        <feature policy='disable' name='rtm'/>
        <feature policy='disable' name='avx512-bf16'/>
        <feature policy='disable' name='taa-no'/>
      </cpu>
      
      2. use this xml to start a guest
      # virsh dumpxml vm1
      ...
        <cpu mode='custom' match='exact' check='partial'>
          <model fallback='forbid'>Cooperlake</model>
          <vendor>Intel</vendor>
          <maxphysaddr mode='passthrough' limit='46'/>
          <feature policy='require' name='vmx'/>
          <feature policy='require' name='pdcm'/>
          <feature policy='require' name='hypervisor'/>
          <feature policy='require' name='ss'/>
          <feature policy='require' name='tsc_adjust'/>
          <feature policy='require' name='umip'/>
          <feature policy='require' name='md-clear'/>
          <feature policy='require' name='flush-l1d'/>
          <feature policy='require' name='xsaves'/>
          <feature policy='require' name='ibpb'/>
          <feature policy='require' name='ibrs'/>
          <feature policy='require' name='amd-stibp'/>
          <feature policy='require' name='amd-ssbd'/>
          <feature policy='require' name='tsx-ctrl'/>
          <feature policy='require' name='sbdr-ssdp-no'/>
          <feature policy='require' name='psdp-no'/>
          <feature policy='require' name='fb-clear'/>
          <feature policy='require' name='gds-no'/>
          <feature policy='require' name='vmx-ins-outs'/>
          <feature policy='require' name='vmx-true-ctls'/>
          <feature policy='require' name='vmx-store-lma'/>
          <feature policy='require' name='vmx-activity-hlt'/>
          <feature policy='require' name='vmx-activity-wait-sipi'/>
          <feature policy='require' name='vmx-vmwrite-vmexit-fields'/>
          <feature policy='require' name='vmx-apicv-xapic'/>
          <feature policy='require' name='vmx-ept'/>
          <feature policy='require' name='vmx-desc-exit'/>
          <feature policy='require' name='vmx-rdtscp-exit'/>
          <feature policy='require' name='vmx-apicv-x2apic'/>
          <feature policy='require' name='vmx-vpid'/>
          <feature policy='require' name='vmx-wbinvd-exit'/>
          <feature policy='require' name='vmx-unrestricted-guest'/>
          <feature policy='require' name='vmx-apicv-register'/>
          <feature policy='require' name='vmx-apicv-vid'/>
          <feature policy='require' name='vmx-rdrand-exit'/>
          <feature policy='require' name='vmx-invpcid-exit'/>
          <feature policy='require' name='vmx-vmfunc'/>
          <feature policy='require' name='vmx-shadow-vmcs'/>
          <feature policy='require' name='vmx-rdseed-exit'/>
          <feature policy='require' name='vmx-pml'/>
          <feature policy='require' name='vmx-xsaves'/>
          <feature policy='require' name='vmx-tsc-scaling'/>
          <feature policy='require' name='vmx-ept-execonly'/>
          <feature policy='require' name='vmx-page-walk-4'/>
          <feature policy='require' name='vmx-ept-2mb'/>
          <feature policy='require' name='vmx-ept-1gb'/>
          <feature policy='require' name='vmx-invept'/>
          <feature policy='require' name='vmx-eptad'/>
          <feature policy='require' name='vmx-invept-single-context'/>
          <feature policy='require' name='vmx-invept-all-context'/>
          <feature policy='require' name='vmx-invvpid'/>
          <feature policy='require' name='vmx-invvpid-single-addr'/>
          <feature policy='require' name='vmx-invvpid-all-context'/>
          <feature policy='require' name='vmx-intr-exit'/>
          <feature policy='require' name='vmx-nmi-exit'/>
          <feature policy='require' name='vmx-vnmi'/>
          <feature policy='require' name='vmx-preemption-timer'/>
          <feature policy='require' name='vmx-posted-intr'/>
          <feature policy='require' name='vmx-vintr-pending'/>
          <feature policy='require' name='vmx-tsc-offset'/>
          <feature policy='require' name='vmx-hlt-exit'/>
          <feature policy='require' name='vmx-invlpg-exit'/>
          <feature policy='require' name='vmx-mwait-exit'/>
          <feature policy='require' name='vmx-rdpmc-exit'/>
          <feature policy='require' name='vmx-rdtsc-exit'/>
          <feature policy='require' name='vmx-cr3-load-noexit'/>
          <feature policy='require' name='vmx-cr3-store-noexit'/>
          <feature policy='require' name='vmx-cr8-load-exit'/>
          <feature policy='require' name='vmx-cr8-store-exit'/>
          <feature policy='require' name='vmx-flexpriority'/>
          <feature policy='require' name='vmx-vnmi-pending'/>
          <feature policy='require' name='vmx-movdr-exit'/>
          <feature policy='require' name='vmx-io-exit'/>
          <feature policy='require' name='vmx-io-bitmap'/>
          <feature policy='require' name='vmx-mtf'/>
          <feature policy='require' name='vmx-msr-bitmap'/>
          <feature policy='require' name='vmx-monitor-exit'/>
          <feature policy='require' name='vmx-pause-exit'/>
          <feature policy='require' name='vmx-secondary-ctls'/>
          <feature policy='require' name='vmx-exit-nosave-debugctl'/>
          <feature policy='require' name='vmx-exit-load-perf-global-ctrl'/>
          <feature policy='require' name='vmx-exit-ack-intr'/>
          <feature policy='require' name='vmx-exit-save-pat'/>
          <feature policy='require' name='vmx-exit-load-pat'/>
          <feature policy='require' name='vmx-exit-save-efer'/>
          <feature policy='require' name='vmx-exit-load-efer'/>
          <feature policy='require' name='vmx-exit-save-preemption-timer'/>
          <feature policy='require' name='vmx-entry-noload-debugctl'/>
          <feature policy='require' name='vmx-entry-ia32e-mode'/>
          <feature policy='require' name='vmx-entry-load-perf-global-ctrl'/>
          <feature policy='require' name='vmx-entry-load-pat'/>
          <feature policy='require' name='vmx-entry-load-efer'/>
          <feature policy='require' name='vmx-eptp-switching'/>
          <feature policy='disable' name='hle'/>
          <feature policy='disable' name='rtm'/>
          <feature policy='disable' name='avx512-bf16'/>
          <feature policy='disable' name='taa-no'/>
          <numa>
            <cell id='0' cpus='0-1' memory='2097152' unit='KiB'/>
          </numa>
        </cpu>
      ...
      
      # virsh start vm1
      Domain 'vm1' started
      
      3. get migratable xml
      
      # virsh dumpxml vm1 --migratable > mig.xml
      # cat mig.xml 
      ...
        <cpu mode='custom' match='exact' check='partial'>
          <model fallback='forbid'>Cooperlake</model>
          <vendor>Intel</vendor>
          <maxphysaddr mode='passthrough' limit='46'/>
          <feature policy='require' name='vmx'/>
          <feature policy='require' name='pdcm'/>
          <feature policy='require' name='hypervisor'/>
          <feature policy='require' name='ss'/>
          <feature policy='require' name='tsc_adjust'/>
          <feature policy='require' name='umip'/>
          <feature policy='require' name='md-clear'/>
          <feature policy='require' name='flush-l1d'/>
          <feature policy='require' name='xsaves'/>
          <feature policy='require' name='ibpb'/>
          <feature policy='require' name='ibrs'/>
          <feature policy='require' name='amd-stibp'/>
          <feature policy='require' name='amd-ssbd'/>
          <feature policy='require' name='tsx-ctrl'/>
          <feature policy='require' name='sbdr-ssdp-no'/>
          <feature policy='require' name='psdp-no'/>
          <feature policy='require' name='fb-clear'/>
          <feature policy='require' name='gds-no'/>
          <feature policy='require' name='vmx-ins-outs'/>
          <feature policy='require' name='vmx-true-ctls'/>
          <feature policy='require' name='vmx-store-lma'/>
          <feature policy='require' name='vmx-activity-hlt'/>
          <feature policy='require' name='vmx-activity-wait-sipi'/>
          <feature policy='require' name='vmx-vmwrite-vmexit-fields'/>
          <feature policy='require' name='vmx-apicv-xapic'/>
          <feature policy='require' name='vmx-ept'/>
          <feature policy='require' name='vmx-desc-exit'/>
          <feature policy='require' name='vmx-rdtscp-exit'/>
          <feature policy='require' name='vmx-apicv-x2apic'/>
          <feature policy='require' name='vmx-vpid'/>
          <feature policy='require' name='vmx-wbinvd-exit'/>
          <feature policy='require' name='vmx-unrestricted-guest'/>
          <feature policy='require' name='vmx-apicv-register'/>
          <feature policy='require' name='vmx-apicv-vid'/>
          <feature policy='require' name='vmx-rdrand-exit'/>
          <feature policy='require' name='vmx-invpcid-exit'/>
          <feature policy='require' name='vmx-vmfunc'/>
          <feature policy='require' name='vmx-shadow-vmcs'/>
          <feature policy='require' name='vmx-rdseed-exit'/>
          <feature policy='require' name='vmx-pml'/>
          <feature policy='require' name='vmx-xsaves'/>
          <feature policy='require' name='vmx-tsc-scaling'/>
          <feature policy='require' name='vmx-ept-execonly'/>
          <feature policy='require' name='vmx-page-walk-4'/>
          <feature policy='require' name='vmx-ept-2mb'/>
          <feature policy='require' name='vmx-ept-1gb'/>
          <feature policy='require' name='vmx-invept'/>
          <feature policy='require' name='vmx-eptad'/>
          <feature policy='require' name='vmx-invept-single-context'/>
          <feature policy='require' name='vmx-invept-all-context'/>
          <feature policy='require' name='vmx-invvpid'/>
          <feature policy='require' name='vmx-invvpid-single-addr'/>
          <feature policy='require' name='vmx-invvpid-all-context'/>
          <feature policy='require' name='vmx-intr-exit'/>
          <feature policy='require' name='vmx-nmi-exit'/>
          <feature policy='require' name='vmx-vnmi'/>
          <feature policy='require' name='vmx-preemption-timer'/>
          <feature policy='require' name='vmx-posted-intr'/>
          <feature policy='require' name='vmx-vintr-pending'/>
          <feature policy='require' name='vmx-tsc-offset'/>
          <feature policy='require' name='vmx-hlt-exit'/>
          <feature policy='require' name='vmx-invlpg-exit'/>
          <feature policy='require' name='vmx-mwait-exit'/>
          <feature policy='require' name='vmx-rdpmc-exit'/>
          <feature policy='require' name='vmx-rdtsc-exit'/>
          <feature policy='require' name='vmx-cr3-load-noexit'/>
          <feature policy='require' name='vmx-cr3-store-noexit'/>
          <feature policy='require' name='vmx-cr8-load-exit'/>
          <feature policy='require' name='vmx-cr8-store-exit'/>
          <feature policy='require' name='vmx-flexpriority'/>
          <feature policy='require' name='vmx-vnmi-pending'/>
          <feature policy='require' name='vmx-movdr-exit'/>
          <feature policy='require' name='vmx-io-exit'/>
          <feature policy='require' name='vmx-io-bitmap'/>
          <feature policy='require' name='vmx-mtf'/>
          <feature policy='require' name='vmx-msr-bitmap'/>
          <feature policy='require' name='vmx-monitor-exit'/>
          <feature policy='require' name='vmx-pause-exit'/>
          <feature policy='require' name='vmx-secondary-ctls'/>
          <feature policy='require' name='vmx-exit-nosave-debugctl'/>
          <feature policy='require' name='vmx-exit-load-perf-global-ctrl'/>
          <feature policy='require' name='vmx-exit-ack-intr'/>
          <feature policy='require' name='vmx-exit-save-pat'/>
          <feature policy='require' name='vmx-exit-load-pat'/>
          <feature policy='require' name='vmx-exit-save-efer'/>
          <feature policy='require' name='vmx-exit-load-efer'/>
          <feature policy='require' name='vmx-exit-save-preemption-timer'/>
          <feature policy='require' name='vmx-entry-noload-debugctl'/>
          <feature policy='require' name='vmx-entry-ia32e-mode'/>
          <feature policy='require' name='vmx-entry-load-perf-global-ctrl'/>
          <feature policy='require' name='vmx-entry-load-pat'/>
          <feature policy='require' name='vmx-entry-load-efer'/>
          <feature policy='require' name='vmx-eptp-switching'/>
          <feature policy='disable' name='hle'/>
          <feature policy='disable' name='rtm'/>
          <feature policy='disable' name='avx512-bf16'/>
          <feature policy='disable' name='taa-no'/>
          <numa>
            <cell id='0' cpus='0-1' memory='2097152' unit='KiB'/>
          </numa>
        </cpu>
      
      4. try to migrate vm to target host with --xml
      
      # virsh migrate vm1 qemu+tcp://XXX/system --live --p2p --tls --parallel --xml mig.xml 
      error: unsupported configuration: Target CPU feature count 24 does not match source 97 
      
      5. try to save vm with --xml
      
      # virsh save vm1 vm1.save --xml mig.xml 
      error: Failed to save domain 'vm1' to vm1.save
      error: unsupported configuration: Target CPU feature count 24 does not match source 97
      
      

      Expected results

      migration and save success in step 4 and 5

      Actual results

      migration and save failed with error "Target CPU feature count 24 does not match source 97"

      Additional Info

      I have test this on 9.4 libvirt (libvirt-10.0.0-6.6.el9_4.x86_64), got the same error:

      1. virsh migrate vm1 qemu+tcp://XXX/system --live --p2p --tls --parallel --xml mig.xml
        error: unsupported configuration: Target CPU feature count 24 does not match source 97

            jdenemar@redhat.com Jiri Denemark
            rhn-support-lhuang Luyao Huang
            Jiri Denemark Jiri Denemark
            Luyao Huang Luyao Huang
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated: