Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Determine the correct microcode version for processor model #16

Closed
kzawad1 opened this issue Oct 11, 2019 · 5 comments
Closed

Determine the correct microcode version for processor model #16

kzawad1 opened this issue Oct 11, 2019 · 5 comments

Comments

@kzawad1
Copy link

kzawad1 commented Oct 11, 2019

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
Copy link
Contributor

esyr-rh commented Oct 11, 2019

$ 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
Copy link
Author

kzawad1 commented Oct 11, 2019

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
Copy link
Contributor

esyr-rh commented Oct 11, 2019

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
Copy link

bulhoes commented Oct 14, 2019

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
Copy link
Author

kzawad1 commented Oct 15, 2019

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.

@kzawad1 kzawad1 closed this as completed Oct 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants