12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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: /*(DEBLOBBED)*/
- on AMD : /*(DEBLOBBED)*/
- 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 /*(DEBLOBBED)*/ (or /*(DEBLOBBED)*/)
- find . | cpio -o -H newc >../ucode.cpio
- cd ..
- cat ucode.cpio /boot/initrd-3.5.0.img >/boot/initrd-3.5.0.ucode.img
|