You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.7 KiB
42 lines
1.7 KiB
Early load microcode |
|
==================== |
|
By Fenghua Yu <fenghua.yu@intel.com> |
|
|
|
Kernel can update microcode in early phase of boot time. Loading microcode early |
|
can fix CPU issues before they are observed during kernel boot time. |
|
|
|
Microcode is stored in an initrd file. The microcode is read from the initrd |
|
file and loaded to CPUs during boot time. |
|
|
|
The format of the combined initrd image is microcode in cpio format followed by |
|
the initrd image (maybe compressed). Kernel parses the combined initrd image |
|
during boot time. The microcode file in cpio name space is: |
|
on Intel: kernel/x86/microcode/GenuineIntel.bin |
|
on AMD : kernel/x86/microcode/AuthenticAMD.bin |
|
|
|
During BSP boot (before SMP starts), if the kernel finds the microcode file in |
|
the initrd file, it parses the microcode and saves matching microcode in memory. |
|
If matching microcode is found, it will be uploaded in BSP and later on in all |
|
APs. |
|
|
|
The cached microcode patch is applied when CPUs resume from a sleep state. |
|
|
|
There are two legacy user space interfaces to load microcode, either through |
|
/dev/cpu/microcode or through /sys/devices/system/cpu/microcode/reload file |
|
in sysfs. |
|
|
|
In addition to these two legacy methods, the early loading method described |
|
here is the third method with which microcode can be uploaded to a system's |
|
CPUs. |
|
|
|
The following example script shows how to generate a new combined initrd file in |
|
/boot/initrd-3.5.0.ucode.img with original microcode microcode.bin and |
|
original initrd image /boot/initrd-3.5.0.img. |
|
|
|
mkdir initrd |
|
cd initrd |
|
mkdir -p kernel/x86/microcode |
|
cp ../microcode.bin kernel/x86/microcode/GenuineIntel.bin (or AuthenticAMD.bin) |
|
find . | cpio -o -H newc >../ucode.cpio |
|
cd .. |
|
cat ucode.cpio /boot/initrd-3.5.0.img >/boot/initrd-3.5.0.ucode.img
|
|
|