Blame releasenote

Packit 863535
Intel Processor Microcode Package for Linux
Packit 863535

Packit 863535
CPU microcode is a mechanism to correct certain errata in existing systems.
Packit 863535
The normal preferred method to apply microcode updates is using the system
Packit 863535
BIOS, but for a subset of Intel's processors this can be done at runtime
Packit 863535
using the operating system. This package contains those processors that
Packit 863535
support OS loading of microcode updates.
Packit 863535

Packit 863535
The target user for this package are OS vendors such as Linux distributions
Packit 863535
for inclusion in their OS releases. Intel recommends getting the microcode
Packit 863535
using the OS vendor update mechanism. Expert users can of course update their
Packit 863535
microcode directly outside the OS vendor mechanism. This method is complex and
Packit 863535
thus could be error prone.
Packit 863535

Packit 863535
Microcode is best loaded from the BIOS. Certain microcode must only be applied
Packit 863535
from the BIOS. Such processor microcode updates are never packaged in this
Packit 863535
package since they are not appropriate for OS distribution. An OEM may receive
Packit 863535
microcode packages that might be a superset of what is contained in this
Packit 863535
package.
Packit 863535

Packit 863535
OS vendors may choose to also update microcode that kernel can consume for early
Packit 863535
loading. For e.g. Linux can update processor microcode very early in the kernel
Packit 863535
boot sequence. In situations when the BIOS update isn't available, early loading
Packit 863535
is the next best alternative to updating processor microcode. Microcode states
Packit 863535
are reset on a power reset, hence its required to be updated everytime during
Packit 863535
boot process.
Packit 863535

Packit 863535
Loading microcode using the initrd method is recommended so that the microcode
Packit 863535
is loaded at the earliest time for best coverage. Systems that cannot tolerate
Packit 863535
downtime may use the late reload method to update a running system without a
Packit 863535
reboot.
Packit 863535

Packit 863535
== About Processor Signature, Family, Model, Stepping and Platform ID ==
Packit 863535
Processor signature is a number identifying the model and version of a
Packit 863535
Intel processor. It can be obtained using the CPUID instruction, and can
Packit 863535
also be obtained via the command lscpu or from the content of /proc/cpuinfo.
Packit 863535
It's usually presented as 3 fields: Family, Model and Stepping
Packit 863535
(In the table of updates below, they are shorten as F, MO and S).
Packit 863535

Packit 863535
The width of Family/Model/Stepping is 12/8/4bit, but when arranged in the
Packit 863535
32bit processor signature raw data is like 0FFM0FMS, hexadecimal.
Packit 863535
e.g. if a processor signature is 0x000906eb, it means
Packit 863535
Family=0x006, Model=0x9e and Stepping=0xb
Packit 863535

Packit 863535
A processor product can be implemented for multiple types of platforms,
Packit 863535
So in MSR(17H), Intel processors have a 3bit Platform ID field,
Packit 863535
that can specify a platform type from at most 8 types.
Packit 863535
A microcode file for a specified processor model can support multiple
Packit 863535
platforms, so the Platform ID of a microcode (shorten as PI in the table)
Packit 863535
is a 8bit mask, each set bit indicates a platform type that it supports.
Packit 863535
One can find the platform ID on Linux using rdmsr from msr-tools.
Packit 863535

Packit 863535
== Microcode update instructions ==
Packit 863535
-- intel-ucode/ --
Packit 863535
intel-ucode directory contains binary microcode files named in
Packit 863535
family-model-stepping pattern. The file is supported in most modern Linux
Packit 863535
distributions. It's generally located in the /lib/firmware directory,
Packit 863535
and can be updated through the microcode reload interface.
Packit 863535

Packit 863535
To update early loading initrd, consult your distribution on how to package
Packit 863535
microcode files for early loading. Some distros use update-initramfs or dracut.
Packit 863535
As recommended above, please use the OS vendors are recommended method to ensure
Packit 863535
microcode file is updated for early loading before attempting the late-load
Packit 863535
procedure below.
Packit 863535

Packit 863535
To update the intel-ucode package to the system, one need:
Packit 863535
1. Ensure the existence of /sys/devices/system/cpu/microcode/reload
Packit 863535
2. Copy intel-ucode directory to /lib/firmware, overwrite the files in
Packit 863535
/lib/firmware/intel-ucode/
Packit 863535
3. Write the reload interface to 1 to reload the microcode files, e.g.
Packit 863535
  echo 1 > /sys/devices/system/cpu/microcode/reload
Packit 863535

Packit 863535
If you are using the OS vendor method to update microcode, the above steps may
Packit 863535
have been done automatically during the update process.
Packit 863535

Packit 863535
-- intel-ucode-with-caveats/ --
Packit 863535
This directory holds microcode that might need special handling.
Packit 863535
BDX-ML microcode is provided in directory, because it need special commits in
Packit 863535
the Linux kernel, otherwise, updating it might result in unexpected system
Packit 863535
behavior. 
Packit 863535
OS vendors must ensure that the late loader patches (provided in
Packit 863535
linux-kernel-patches\) are included in the distribution before packaging the
Packit 863535
BDX-ML microcode for late-loading.
Packit 863535

Packit 863535
== 20200609 Release ==
Packit 863535
-- Updates upon 20200520 release --
Packit 863535
Processor             Identifier     Version       Products
Packit 863535
Model        Stepping F-MO-S/PI      Old->New
Packit 863535
---- new platforms ----------------------------------------
Packit 863535

Packit 863535
---- updated platforms ------------------------------------
Packit 863535
HSW          C0       6-3c-3/32 00000027->00000028 Core Gen4
Packit 863535
BDW-U/Y      E0/F0    6-3d-4/c0 0000002e->0000002f Core Gen5
Packit 863535
HSW-U        C0/D0    6-45-1/72 00000025->00000026 Core Gen4
Packit 863535
HSW-H        C0       6-46-1/32 0000001b->0000001c Core Gen4
Packit 863535
BDW-H/E3     E0/G0    6-47-1/22 00000021->00000022 Core Gen5
Packit 863535
SKL-U/Y      D0       6-4e-3/c0 000000d6->000000dc Core Gen6 Mobile
Packit 863535
SKL-U23e     K1       6-4e-3/c0 000000d6->000000dc Core Gen6 Mobile
Packit 863535
SKX-SP       B1       6-55-3/97 01000151->01000157 Xeon Scalable
Packit 863535
SKX-SP       H0/M0/U0 6-55-4/b7 02000065->02006906 Xeon Scalable
Packit 863535
SKX-D        M1       6-55-4/b7 02000065->02006906 Xeon D-21xx
Packit 863535
CLX-SP       B0       6-55-6/bf 0400002c->04002f01 Xeon Scalable Gen2
Packit 863535
CLX-SP       B1       6-55-7/bf 0500002c->05002f01 Xeon Scalable Gen2
Packit 863535
SKL-H/S      R0/N0    6-5e-3/36 000000d6->000000dc Core Gen6; Xeon E3 v5
Packit 863535
AML-Y22      H0       6-8e-9/10 000000ca->000000d6 Core Gen8 Mobile
Packit 863535
KBL-U/Y      H0       6-8e-9/c0 000000ca->000000d6 Core Gen7 Mobile
Packit 863535
CFL-U43e     D0       6-8e-a/c0 000000ca->000000d6 Core Gen8 Mobile
Packit 863535
WHL-U        W0       6-8e-b/d0 000000ca->000000d6 Core Gen8 Mobile
Packit 863535
AML-Y42      V0       6-8e-c/94 000000ca->000000d6 Core Gen10 Mobile
Packit 863535
CML-Y42      V0       6-8e-c/94 000000ca->000000d6 Core Gen10 Mobile
Packit 863535
WHL-U        V0       6-8e-c/94 000000ca->000000d6 Core Gen8 Mobile
Packit 863535
KBL-G/H/S/E3 B0       6-9e-9/2a 000000ca->000000d6 Core Gen7; Xeon E3 v6
Packit 863535
CFL-H/S/E3   U0       6-9e-a/22 000000ca->000000d6 Core Gen8 Desktop, Mobile, Xeon E
Packit 863535
CFL-S        B0       6-9e-b/02 000000ca->000000d6 Core Gen8
Packit 863535
CFL-H/S      P0       6-9e-c/22 000000ca->000000d6 Core Gen9
Packit 863535
CFL-H        R0       6-9e-d/22 000000ca->000000d6 Core Gen9 Mobile
Packit 863535

Packit 863535
---- removed platforms ------------------------------------