intel / Intel-Linux-Processor-Microcode-Data-Files

Other
637 stars 70 forks source link

Determine the correct microcode version for processor model #16

Closed kzawad1 closed 4 years ago

kzawad1 commented 4 years ago

I'm am running Linux with an Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz, I can query for the microcode version with the following command: ubuntu@ubuntu-236:~$ grep 'stepping\|model\|microcode' /proc/cpuinfo model : 69 model name : Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz stepping : 1 microcode : 0x25 model : 69 model name : Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz stepping : 1 microcode : 0x25 model : 69 model name : Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz stepping : 1 microcode : 0x25 model : 69 model name : Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz stepping : 1 microcode : 0x25 ubuntu@ubuntu-236:~$

How do I find out if this is the correct microcode version for this processor model?

esyr-rh commented 4 years ago

$ iucode_tool -L microcode-20190918/intel-ucode/06-45-01 microcode bundle 1: microcode-20190918/intel-ucode/06-45-01 001/001: sig 0x00040651, pf_mask 0x72, 2019-02-26, rev 0x0025, size 21504

kzawad1 commented 4 years ago

Why did you pick binary blob 06-45-01 as the file to list the microcode signature?

Other than this being of of the most recent files modified. The naming scheme on these files is not so clear.

esyr-rh commented 4 years ago

It is loosely documented in various places[1][2][3][4], the microcode file name requested by the kernel (for Intel x86 CPUs) is in FF-MM-SS format, where FF, MM, and SS are Family, Model and Stepping numbers in hexadecimal for the CPU in question (you can see the decimal representations of these numbers in your output).

[1] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/blob/master/releasenote#L33 [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/kernel/cpu/microcode/intel.c#n981 [3] https://git.centos.org/rpms/microcode_ctl/blob/c7/f/SOURCES/README.caveats#_37 [4] https://gitlab.com/iucode-tool/iucode-tool/blob/master/README#L199

bulhoes commented 4 years ago

Hello @kzawad1 ,

The filenames from the microcode come fromt he following values from the cpu in /proc/cpuinfo.

cpu_family model stepping

you should use the hex values to find the file.

The file will be [cpu_family]-[model]-[stepping].

Hope it helps.

kzawad1 commented 4 years ago

Thank you for the replies, now it makes sense:

root@ubuntu-236:~# head -8 /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 69 model name : Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz stepping : 1 microcode : 0x25 cpu MHz : 1896.017 root@ubuntu-236:~#

The CPU Family is 6d = 0x06 - Model is 69d = 0x45 - Stepping 1d = 0x01, so it is 06-45-01.