|
@@ -0,0 +1,43 @@
|
|
|
+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:
|
|
|
+kernel/x86/microcode/GenuineIntel.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 kernel
|
|
|
+mkdir kernel/x86
|
|
|
+mkdir kernel/x86/microcode
|
|
|
+cp ../microcode.bin kernel/x86/microcode/GenuineIntel.bin
|
|
|
+find .|cpio -oc >../ucode.cpio
|
|
|
+cd ..
|
|
|
+cat ucode.cpio /boot/initrd-3.5.0.img >/boot/initrd-3.5.0.ucode.img
|