Bug 1835555

Summary: [RHEL 6] Narrow down the SKX (SKL-SP/X/W/D) microcode blacklist
Product: Red Hat Enterprise Linux 6 Reporter: Eugene Syromiatnikov <esyr>
Component: microcode_ctlAssignee: Eugene Syromiatnikov <esyr>
Status: CLOSED ERRATA QA Contact: Jeff Bastian <jbastian>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.10CC: skozina, toneata
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: microcode_ctl-1.17-33.24.el6_10 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
https://bugzilla.redhat.com/show_bug.cgi?id=1835555
Last Closed: 2020-06-09 19:23:19 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:

Description Eugene Syromiatnikov 2020-05-14 03:36:21 UTC
Currently, due to [1], all microcode updates past revision 0x2000064 are disabled on SKX (1st generation Xeon Skalable Platform, Skylake Scalable Platform, SKL-SP, SKL-X, SKL-W, SKL-D; FF-MM-SS 06-55-04, CPUID 0x50654) by default.  This, in fact, too broad blacklist, as the issue affects only Workstation (SKL-W, SKX-W) and HEDT (SKL-X, SKX-X, Basin Falls) segments.  As it was suggested quite some time ago, these can be differentiated by referring to bits 5..3 of CAPID0 field of PCU registers device (Bus 1, Device 30, Function 3, VID:DID 8086:2083)[2] (there's some information regarding the device's fields available for BDX[3], but not for SKX[4], and they are indeed different).  By implementing a more precise filter, it is possible to avoid issues with the latest CPU errata/CVEs not being mitigated by default in a more common SKL-SP server segment CPU case.

Steps to Reproduce:
1. Install microcode_ctl package, version 2.1-61.el7 or higher on a system with SKL-SP Server segment CPU (Intel Xeon 81xx).
2. Check the dmesg/syslog for disclaimers
3. Check the microcode version populated in /lib/firmware/KERNEL_VERSION/inte-ucode and the early initramfs

Actual results:
Disclaimer is present, older (0x2000064) microcode revision is used.

Expected results:
No disclaimer present, newer (0x2000065) microcode revision is used.

[1] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/21
[2] https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-scalable-spec-update.pdf#page
[3] https://www.intel.com/content/www/us/en/processors/xeon/xeon-e5-v4-datasheet-vol-2.html , page 82
[4] https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/2nd-gen-xeon-scalable-spec-update.pdf , page 57

Comment 7 Jeff Bastian 2020-05-21 17:47:27 UTC
Verified with microcode_ctl-1.17-33.24.el6_10

I tested on two Skylake systems (06-55-04).  The first had a Xeon W-2133 which is blacklisted, the second had a Xeon Gold 6152 which is ok for microcode updates.  The W-2133 CPU was restricted to microcode version 0x2000064 so the job reported a failed result (which is expected), and the Gold 6152 was able to update to microcode version 0x2000065 so it passed.  (Neither system had a "force" file in place, so the defaults worked correctly.)

https://beaker.engineering.redhat.com/jobs/4270090

Comment 8 Jeff Bastian 2020-05-21 17:54:10 UTC
Also note that the microcode data itself does not change with this update.  This is just an update to the check_caveats script and associated configs and documentation:

~]# rpmdiff microcode_ctl-1.17-33.23.el6_10.x86_64.rpm \
            microcode_ctl-1.17-33.24.el6_10.x86_64.rpm |
    grep -v -F '..........T'
removed     PROVIDES microcode_ctl(x86-64) = 2:1.17-33.23.el6_10
added       PROVIDES microcode_ctl(x86-64) = 2:1.17-33.24.el6_10
S.5.......T /usr/libexec/microcode_ctl/check_caveats
S.5.......T /usr/share/doc/microcode_ctl-1.17/README.caveats
S.5.......T /usr/share/microcode_ctl/ucode_with_caveats/intel-06-2d-07/config
S.5.......T /usr/share/microcode_ctl/ucode_with_caveats/intel-06-2d-07/readme
S.5.......T /usr/share/microcode_ctl/ucode_with_caveats/intel-06-55-04/config
S.5.......T /usr/share/microcode_ctl/ucode_with_caveats/intel-06-55-04/readme

Comment 10 errata-xmlrpc 2020-06-09 19:23:19 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, 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/RHSA-2020:2433