Comment 47 for bug 1887490

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Pre:
root@f:~# grep EPYC /usr/share/libvirt/cpu_map/index.xml
    <include filename="x86_EPYC.xml"/>
    <include filename="x86_EPYC-IBPB.xml"/>
root@f:~# virsh domcapabilities | grep EPYC
      <model usable='no'>EPYC-IBPB</model>
      <model usable='no'>EPYC</model>
root@f:~# cat test.xml
<domain type='kvm'>
  <name>test</name>
  <memory unit='KiB'>4194304</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-q35-focal'>hvm</type>
    <boot dev='hd'/>
  </os>
  <cpu mode='custom' match='exact' check='partial'>
    <model fallback='forbid'>EPYC-Rome</model>
  </cpu>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
  </devices>
</domain>
root@f:~# virsh define test.xml
Domain test defined from test.xml
root@f:~# virsh start test
error: Failed to start domain test
error: internal error: Unknown CPU model EPYC-Rome

Upgrade:
root@f:~# v=6.0.0-0ubuntu8.5; apt install libvirt-daemon-system=$v libvirt-clients=$v libvirt-daemon=$v libvirt0=$v libvirt-daemon-driver-qemu=$v libvirt-daemon-driver-storage-rbd=$v
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  geoip-database libgd3 libgeoip1 libxencall1 libxendevicemodel1 libxenevtchn1 libxenforeignmemory1 libxengnttab1 libxenmisc4.11 libxenstore3.0 libxentoolcore1 libxentoollog1 libxpm4
Use 'apt autoremove' to remove them.
Suggested packages:
  libvirt-daemon-driver-lxc libvirt-daemon-driver-vbox libvirt-daemon-driver-xen libvirt-daemon-driver-storage-gluster libvirt-daemon-driver-storage-zfs numad auditd pm-utils radvd
  systemtap zfsutils
The following packages will be upgraded:
  libvirt-clients libvirt-daemon libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-rbd libvirt-daemon-system libvirt0
6 upgraded, 0 newly installed, 0 to remove and 53 not upgraded.
Need to get 2892 kB of archives.
After this operation, 8192 B of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu focal-proposed/main amd64 libvirt-daemon-driver-qemu amd64 6.0.0-0ubuntu8.5 [605 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal-proposed/main amd64 libvirt-daemon-driver-storage-rbd amd64 6.0.0-0ubuntu8.5 [28.3 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal-proposed/main amd64 libvirt-daemon-system amd64 6.0.0-0ubuntu8.5 [67.5 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-proposed/main amd64 libvirt-clients amd64 6.0.0-0ubuntu8.5 [344 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-proposed/main amd64 libvirt0 amd64 6.0.0-0ubuntu8.5 [1443 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal-proposed/main amd64 libvirt-daemon amd64 6.0.0-0ubuntu8.5 [405 kB]
Fetched 2892 kB in 1s (2314 kB/s)
Preconfiguring packages ...
(Reading database ... 77297 files and directories currently installed.)
Preparing to unpack .../0-libvirt-daemon-driver-qemu_6.0.0-0ubuntu8.5_amd64.deb ...
Unpacking libvirt-daemon-driver-qemu (6.0.0-0ubuntu8.5) over (6.0.0-0ubuntu8.4) ...
Preparing to unpack .../1-libvirt-daemon-driver-storage-rbd_6.0.0-0ubuntu8.5_amd64.deb ...
Unpacking libvirt-daemon-driver-storage-rbd (6.0.0-0ubuntu8.5) over (6.0.0-0ubuntu8.4) ...
Preparing to unpack .../2-libvirt-daemon-system_6.0.0-0ubuntu8.5_amd64.deb ...
Unpacking libvirt-daemon-system (6.0.0-0ubuntu8.5) over (6.0.0-0ubuntu8.4) ...
Preparing to unpack .../3-libvirt-clients_6.0.0-0ubuntu8.5_amd64.deb ...
Unpacking libvirt-clients (6.0.0-0ubuntu8.5) over (6.0.0-0ubuntu8.4) ...
Preparing to unpack .../4-libvirt0_6.0.0-0ubuntu8.5_amd64.deb ...
Unpacking libvirt0:amd64 (6.0.0-0ubuntu8.5) over (6.0.0-0ubuntu8.4) ...
Preparing to unpack .../5-libvirt-daemon_6.0.0-0ubuntu8.5_amd64.deb ...
Unpacking libvirt-daemon (6.0.0-0ubuntu8.5) over (6.0.0-0ubuntu8.4) ...
Setting up libvirt0:amd64 (6.0.0-0ubuntu8.5) ...
Setting up libvirt-clients (6.0.0-0ubuntu8.5) ...
Setting up libvirt-daemon-driver-qemu (6.0.0-0ubuntu8.5) ...
Setting up libvirt-daemon (6.0.0-0ubuntu8.5) ...
Setting up libvirt-daemon-driver-storage-rbd (6.0.0-0ubuntu8.5) ...
Setting up libvirt-daemon-system (6.0.0-0ubuntu8.5) ...
Job failed. See "journalctl -xe" for details.
virtlockd.service is a disabled or a static unit, not starting it.
virtlogd.service is a disabled or a static unit, not starting it.
Setting up libvirt-daemon dnsmasq configuration.
Processing triggers for libc-bin (2.31-0ubuntu9.1) ...
Processing triggers for man-db (2.9.1-1) ...

Post upgrade:
root@f:~# grep EPYC /usr/share/libvirt/cpu_map/index.xml
    <include filename="x86_EPYC.xml"/>
    <include filename="x86_EPYC-IBPB.xml"/>
    <include filename="x86_EPYC-Rome.xml"/>
root@f:~# ll /usr/share/libvirt/cpu_map/x86_EPYC-Rome.xml
-rw-r--r-- 1 root root 2289 Oct 8 05:36 /usr/share/libvirt/cpu_map/x86_EPYC-Rome.xml
root@f:~# virsh domcapabilities | grep EPYC
      <model usable='no'>EPYC-Rome</model>
      <model usable='no'>EPYC-IBPB</model>
      <model usable='no'>EPYC</model>
root@f:~# virsh start test
error: Failed to start domain test
error: the CPU is incompatible with host CPU: Host CPU does not provide required features: clwb, sha-ni, rdpid, mmxext, fxsr_opt, svm, cr8legacy, sse4a, misalignsse, osvw, perfctr_core, clzero, xsaveerptr, wbnoinvd, npt, nrip-save

While I had no Rome cpu around one can see it now knew how to make one up (showing me what features I miss).

This LGTM and also had shown no issues in the regression and migration tests.
Up to @Markus to give this a final verification on the respective CPU then we can call it verified.