[FFe/SRU] Add/Backport EPYC-v3 and EPYC-Rome CPU model
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libvirt (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Undecided
|
Unassigned | ||
linux (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Medium
|
Unassigned | ||
qemu (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
High
|
Unassigned |
Bug Description
[Impact]
* CPU definitions are added to libvirt as these CPUs are known
and added to qemu for execution.
And due to that over time some are considered missing in
former releases.
* To really benefit from the new features of these chips
they have to be known, therefore new type additions done by
upstream should be backported if they generally apply and do
not depend on SRU-critical changes.
* This backports three upstream fixes that just add definitions
(no control flow changes)
[Test Case]
* Check if it has an EPYC-Rome entry in
/usr/
there exists.
* Define a guest like:
<cpu mode='custom' match='exact' check='partial'>
<model fallback=
</cpu>
You can only "really" start this on a system with the
matching HW. But even on others it will change from:
error: internal error: Unknown CPU model EPYC-Rome
to being unable to start for some features missing.
* libvirt probes a system if a named cpu can be used, after the
fix this should include EPYC-Rome
$ virsh domcapabilities | grep EPYC
<model usable=
<model usable=
[Regression Potential]
* Usually these type additions are safe unless they add control flow
changes (e.g. to handle yet unknown types of registers or such) but
that isn't the case here.
A regression if any is to be expected on systems that are close to the
newly added type(s). Those will after the update be detected as such
if e.g. host-model is used. If then running on a mixed cluster of
updated/
updated as well.
[Other Info]
* This is the first build since glibc 2.32 arrived in groovy, hence we
need to be careful of the fix done for bug 1892826.
It has to be checked if the linking is fine after the rebuild.
The workload still works in groovy despite 2.32 being present (I'd ahve
expected it doesn't), so we will keep the revert as-is for now.
To be sure that adds two tests that shall be done:
- check the linking to point to libtirpc instead of glibc
$ eu-readelf -a /usr/lib/
Was pointing to glibc, does it still and if so does it work (see
below)?
- run the autopkgtest cases as the LXC tests would trigger an issue if
there is one
----
## Qemu SRU ##
[Impact]
* CPU definitions are added to qemu as these CPUs are known.
And due to that over time are missing in former releases.
* To really benefit from the new features of these chips
they have to be known, therefore new type additions done by
upstream should be backported if they generally apply and do
not depend on SRU-critical changes.
* This backports two upstream fixes that just add definitions (no
control flow changes)
[Test Case]
* Probe qemu for the known CPU types (works on all HW)
$ qemu-system-x86_64 -cpu ? | grep EPYC
Focal without fix:
x86 EPYC (alias configured by machine type)
x86 EPYC-IBPB (alias of EPYC-v2)
x86 EPYC-v1 AMD EPYC Processor
x86 EPYC-v2 AMD EPYC Processor (with IBPB)
Focal with fix also adds:
x86 EPYC-Rome (alias configured by machine type)
x86 EPYC-Rome-v1 AMD EPYC-Rome Processor
x86 EPYC-v3 AMD EPYC Processor
* Given such HW is available start a KVM guest using those new types
Since we don't have libvirt support (yet) do so directly in qemu
commandline like (bootloader is enough)
$ qemu-system-x86_64 -cpu EPYC-Rome -machine pc-q35-
$ qemu-system-x86_64 -cpu EPYC-v3 -machine pc-q35-
[Regression Potential]
* This adds new CPU types to the list of known CPUs defining their name
and features. Generally the changes are contained to those new types
and only active when selected - and usually only selectable on such new
machines. Therefore not a lot should change for other users.
One thing thou, if a user selected an unversioned type (which in this
case only can be "EPYC") by default it will pick the latest subversion
that applies. In this case the behavior will change and pick EPYC-v3
after the fix. But this is the whole purpose of versioned (stay as is)
and unversioned (move with updates) CPU types - so that should be ok.
The EPYC-Rome type didn't exist in Focal before, so it can't "change"
for users.
[Other Info]
* Depends on the new kernel 5.4.0-49 or later (Currently in
focal-proposed)
---
Qemu in focal has already support for most (except amd-stibp) flags of this model.
Please backport the following patches:
https:/
https:/
Related branches
- Sergio Durigan Junior (community): Approve
- Canonical Server packageset reviewers: Pending requested
- git-ubuntu developers: Pending requested
-
Diff: 6663 lines (+6587/-0)12 files modifieddebian/changelog (+7/-0)
debian/patches/series (+10/-0)
debian/patches/ubuntu/lp-1887490-Add-testdata-for-AMD-EPYC-7502.patch (+2167/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Add-missing-AMD-SVM-features.patch (+830/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Add-missing-x86-features-in-0x7-CPUID-leaf.patch (+133/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Add-missing-x86-features-in-0x80000008-CPUID.patch (+217/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Add-pschange-mc-no-bit-in-IA32_ARCH_CAPABILI.patch (+141/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Defined-and-enable-EPYC-Rome-model.patch (+309/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Remove-monitor-feature-from-EPYC-Rome.patch (+101/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Request-test-files-update-when-adding-x86-fe.patch (+231/-0)
debian/patches/ubuntu/lp-1887490-cputest-Add-data-for-AMD-Ryzen-9-3900X-12-Core-Proce.patch (+2073/-0)
debian/patches/ubuntu/lp-1887490-cputest-Update-QEMU-data-for-Ryzen-9-3900X.patch (+368/-0)
- Lucas Kanashiro (community): Approve
- Canonical Server: Pending requested
- Canonical Server packageset reviewers: Pending requested
-
Diff: 3136 lines (+3096/-0)6 files modifieddebian/changelog (+7/-0)
debian/patches/series (+4/-0)
debian/patches/ubuntu/lp-1887490-Add-testdata-for-AMD-EPYC-7502.patch (+2167/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Defined-and-enable-EPYC-Rome-model.patch (+429/-0)
debian/patches/ubuntu/lp-1887490-cpu_map-Remove-monitor-feature-from-EPYC-Rome.patch (+121/-0)
debian/patches/ubuntu/lp-1887490-cputest-Update-QEMU-data-for-Ryzen-9-3900X.patch (+368/-0)
- Robie Basak: Approve (sru)
- Canonical Server: Pending requested
- git-ubuntu developers: Pending requested
-
Diff: 520 lines (+480/-0)6 files modifieddebian/changelog (+10/-0)
debian/patches/series (+4/-0)
debian/patches/ubuntu/lp-1849644-io-channel-websock-treat-binary-and-no-sub-protocol-.patch (+127/-0)
debian/patches/ubuntu/lp-1882774-i386-Add-2nd-Generation-AMD-EPYC-processors.patch (+191/-0)
debian/patches/ubuntu/lp-1882774-i386-Add-missing-cpu-feature-bits-in-EPYC-model.patch (+76/-0)
debian/patches/ubuntu/lp-1896751-exec-rom_reset-Free-rom-data-during-inmigrate-skip.patch (+72/-0)
CVE References
description: | updated |
Changed in qemu (Ubuntu Focal): | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in linux (Ubuntu Focal): | |
status: | Confirmed → Fix Committed |
tags: |
added: verification-done-focal removed: verification-needed-focal |
Changed in qemu (Ubuntu Focal): | |
status: | Incomplete → In Progress |
description: | updated |
summary: |
- Add/Backport EPYC-v3 and EPYC-Rome CPU model + [FFe/SRU] Add/Backport EPYC-v3 and EPYC-Rome CPU model |
description: | updated |
Changed in libvirt (Ubuntu): | |
status: | Incomplete → In Progress |
Changed in libvirt (Ubuntu Focal): | |
status: | Incomplete → Triaged |
Hello Markus,
Thanks for the report. I'm subscribing @ubuntu-virt here so @paelzer can take a look at this. He is the current maintainer for qemu
$ git describe --tags a16e8dbc043720a bcb37fc7dca313e 720b4e0f0c 2476-ga16e8dbc0 4
v4.2.0-
$ git describe --tags 143c30d4d346831 a09e59e9af45afd ca0331e819 2477-g143c30d4d 3
v4.2.0-
$ git tag --contains a16e8dbc043720a bcb37fc7dca313e 720b4e0f0c | sort -n
v5.0.0
v5.0.0-rc0
Looks like those were added in v5.0.0-rc0 and that we could add EPYC extra CPU features and the EPYC 2nd gen CPU model to Focal indeed.
Marcus I'm afraid this will take around a week or more for feedback as @paelzer is out and there are some current on-going fixes landing qemu this week.
Thank you!