|
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 ------------------------------------
|