diff options
| -rw-r--r-- | Documentation/x86/early-microcode.txt | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Documentation/x86/early-microcode.txt b/Documentation/x86/early-microcode.txt new file mode 100644 index 000000000000..4aaf0dfb0cb8 --- /dev/null +++ b/Documentation/x86/early-microcode.txt | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | Early load microcode | ||
| 2 | ==================== | ||
| 3 | By Fenghua Yu <fenghua.yu@intel.com> | ||
| 4 | |||
| 5 | Kernel can update microcode in early phase of boot time. Loading microcode early | ||
| 6 | can fix CPU issues before they are observed during kernel boot time. | ||
| 7 | |||
| 8 | Microcode is stored in an initrd file. The microcode is read from the initrd | ||
| 9 | file and loaded to CPUs during boot time. | ||
| 10 | |||
| 11 | The format of the combined initrd image is microcode in cpio format followed by | ||
| 12 | the initrd image (maybe compressed). Kernel parses the combined initrd image | ||
| 13 | during boot time. The microcode file in cpio name space is: | ||
| 14 | kernel/x86/microcode/GenuineIntel.bin | ||
| 15 | |||
| 16 | During BSP boot (before SMP starts), if the kernel finds the microcode file in | ||
| 17 | the initrd file, it parses the microcode and saves matching microcode in memory. | ||
| 18 | If matching microcode is found, it will be uploaded in BSP and later on in all | ||
| 19 | APs. | ||
| 20 | |||
| 21 | The cached microcode patch is applied when CPUs resume from a sleep state. | ||
| 22 | |||
| 23 | There are two legacy user space interfaces to load microcode, either through | ||
| 24 | /dev/cpu/microcode or through /sys/devices/system/cpu/microcode/reload file | ||
| 25 | in sysfs. | ||
| 26 | |||
| 27 | In addition to these two legacy methods, the early loading method described | ||
| 28 | here is the third method with which microcode can be uploaded to a system's | ||
| 29 | CPUs. | ||
| 30 | |||
| 31 | The following example script shows how to generate a new combined initrd file in | ||
| 32 | /boot/initrd-3.5.0.ucode.img with original microcode microcode.bin and | ||
| 33 | original initrd image /boot/initrd-3.5.0.img. | ||
| 34 | |||
| 35 | mkdir initrd | ||
| 36 | cd initrd | ||
| 37 | mkdir kernel | ||
| 38 | mkdir kernel/x86 | ||
| 39 | mkdir kernel/x86/microcode | ||
| 40 | cp ../microcode.bin kernel/x86/microcode/GenuineIntel.bin | ||
| 41 | find .|cpio -oc >../ucode.cpio | ||
| 42 | cd .. | ||
| 43 | cat ucode.cpio /boot/initrd-3.5.0.img >/boot/initrd-3.5.0.ucode.img | ||
