Bug 1918571

Summary: "Host CPU does not provide required features: monitor" [rhel-8.3.0.z]
Product: Red Hat Enterprise Linux Advanced Virtualization Reporter: RHEL Program Management Team <pgm-rhel-tools>
Component: libvirtAssignee: Jiri Denemark <jdenemar>
Status: CLOSED ERRATA QA Contact: yalzhang <yalzhang>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.1CC: abpatil, andrey66, aoconnor, chayang, dgilbert, dyuan, ehabkost, hbarcomb, hetz, jdenemar, jen, jinzhao, jortialc, jsuchane, juzhang, lhuang, lmen, mkalinin, mnl, mzamazal, nanliu, qzhang, rbalakri, sbonazzo, usurse, virt-maint, xuzhang, yalzhang, ymankad, yuhuang
Target Milestone: rcKeywords: Triaged, ZStream
Target Release: 8.4Flags: pm-rhel: mirror+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libvirt-6.6.0-7.3.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1798004 Environment:
Last Closed: 2021-01-25 14:35:43 UTC Type: ---
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: 1798004    
Bug Blocks:    

Comment 1 Yash Mankad 2021-01-21 04:53:57 UTC
Hi Yalan,

Could you grant qa_ack+ please ?

Thanks!

Comment 5 yalzhang@redhat.com 2021-01-25 03:37:32 UTC
Refer to Bug 1798004#c44 for the test steps:

Reproduce bug on libvirt-6.6.0-7.2.module+el8.3.0+9452+c31d6765.x86_64

1. Host and L1 guest both installed libvirt-6.6.0-7.2;

2. Host cpu model is 'EPYC-IBPB';

3. Start L1 guest with cpu model as below:
<cpu mode='host-passthrough' check='partial' migratable='on'/>

4. On L1 guest, the cpu is recognized as "Opteron_G2" by "virsh capabilities", try to start L2 guest with cpu as:
  <cpu mode='custom' match='exact' check='partial'>
    <model fallback='allow'>EPYC</model>
    <feature policy='require' name='ibpb'/>
    <feature policy='require' name='virt-ssbd'/>
  </cpu>

5. The L2 guest can not start with error as:
[root@L1 ~]# virsh start rh
error: Failed to start domain rh
error: the CPU is incompatible with host CPU: Host CPU does not provide required features: monitor

Update the libvirt both on host and L1 guest to libvirt-6.6.0-7.3.module+el8.3.0+9547+7d548490.x86_64
1. start the L1 guest, the guest cpu is recognized as "EPYC-IBPB"
[root@L1 ~]# virsh domcapabilities 
 <cpu>
    <mode name='host-passthrough' supported='yes'>
      <enum name='hostPassthroughMigratable'>
        <value>on</value>
        <value>off</value>
      </enum>
    </mode>
    <mode name='host-model' supported='yes'>
      <model fallback='forbid'>EPYC-IBPB</model>
      <vendor>AMD</vendor>
      <feature policy='require' name='x2apic'/>
      <feature policy='require' name='tsc-deadline'/>
      <feature policy='require' name='hypervisor'/>
      <feature policy='require' name='tsc_adjust'/>
      <feature policy='require' name='arch-capabilities'/>
      <feature policy='require' name='xsaves'/>
      <feature policy='require' name='cmp_legacy'/>
      <feature policy='require' name='perfctr_core'/>
      <feature policy='require' name='clzero'/>
      <feature policy='require' name='xsaveerptr'/>
      <feature policy='require' name='virt-ssbd'/>
      <feature policy='require' name='rdctl-no'/>
      <feature policy='require' name='skip-l1dfl-vmentry'/>
      <feature policy='require' name='mds-no'/>
      <feature policy='require' name='pschange-mc-no'/>
      <feature policy='disable' name='svm'/>
      <feature policy='disable' name='monitor'/>
    </mode>
    <mode name='custom' supported='yes'>
...
 <model usable='no'>EPYC-Rome</model>
      <model usable='yes'>EPYC-IBPB</model>
      <model usable='yes'>EPYC</model>
      <model usable='yes'>Dhyana</model>
...

# virsh capabilities
<capabilities>

  <host>
    <uuid>64b6bd9c-1304-4f29-a007-37ff58b9b7a5</uuid>
    <cpu>
      <arch>x86_64</arch>
      <model>EPYC-IBPB</model>
      <vendor>AMD</vendor>
      <microcode version='134222416'/>
      <topology sockets='1' dies='1' cores='1' threads='1'/>
      <feature name='x2apic'/>
      <feature name='tsc-deadline'/>
      <feature name='osxsave'/>
      <feature name='hypervisor'/>
      <feature name='tsc_adjust'/>
      <feature name='arch-capabilities'/>
      <feature name='xsaves'/>
      <feature name='cmp_legacy'/>
      <feature name='perfctr_core'/>
      <feature name='clzero'/>
      <feature name='xsaveerptr'/>
      <feature name='virt-ssbd'/>
      <feature name='npt'/>
      <feature name='nrip-save'/>
      <feature name='rdctl-no'/>
      <feature name='skip-l1dfl-vmentry'/>
      <feature name='mds-no'/>
      <feature name='pschange-mc-no'/>
      <pages unit='KiB' size='4'/>
      <pages unit='KiB' size='2048'/>
      <pages unit='KiB' size='1048576'/>
    </cpu>
...


2. start the L2 guest, the guest can start successfully.
[root@L1 ~]# virsh dumpxml rh | grep /cpu -B4
  <cpu mode='custom' match='exact' check='partial'>
    <model fallback='allow'>EPYC</model>
    <feature policy='require' name='ibpb'/>
    <feature policy='require' name='virt-ssbd'/>
  </cpu>

[root@L1 ~]# virsh start rh
Domain rh started

[root@L1 ~]# virsh dumpxml rh | grep /cpu -B9
  <cpu mode='custom' match='exact' check='full'>
    <model fallback='forbid'>EPYC</model>
    <feature policy='require' name='ibpb'/>
    <feature policy='require' name='virt-ssbd'/>
    <feature policy='disable' name='monitor'/>
    <feature policy='require' name='x2apic'/>
    <feature policy='require' name='hypervisor'/>
    <feature policy='disable' name='svm'/>
    <feature policy='require' name='topoext'/>
  </cpu>

set the bug to be verified.

Comment 7 errata-xmlrpc 2021-01-25 14:35:43 UTC
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 (virt:8.3 bug fix update), 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-2021:0241