MC Extractor: Intel, AMD, VIA & Freescale Microcode Extraction Tool Discussion

Hello!
Can somebody please share this one, or tell where to get it?

cpu40651_plat72_ver00000021_2017-11-20_PRD_2B637CE4

Do you guys think we can expect microcode updates for the Spectre, Hardware support for branch target injection mitigation?

Yes, both OS and microcode mitigations. Some OEMs have already started to release updated BIOS images (Intel today as well for some of their systems).

How is the distinction between PRD and PRE (production and pre-production) made?

The Intel microcode Version is a signed dword so bit 0 shows integer negativity and the rest of them (1-31) the actual value it holds. If bit 0 = 0 ā†’ PRD whereas if bit 0 = 1 ā†’ PRE. Note that despite this fact, the entire dword is used to display the Version (treated as unsigned in such case).

@plutomaniac

I need a confirmation that i understand right how works the new 1.12.0 version to be sure to do the right thing with my bios.

I have 2 microcodes in my bios that are now listed as outdated but never were before in previous version of MC Extractor and no new microcodes got out for those. A -search confirmed this.

Ā±-----------------------------------------------------------------------------+
| Intel |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+
| # | CPUID | Platform | Version | Date | Release | Status |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+
| 1 | 106A2 | 03 [0, 1] | FFFF0019 | 2008-07-14 | Pre-Production | Latest |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+
| 2 | 106A4 | 01 [0] | D | 2008-11-26 | Production | Outdated |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+
| 3 | 106A4 | 02 [1] | A | 2008-09-19 | Production | Outdated |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+
| 4 | 106A5 | 03 [0, 1] | 1B | 2015-06-27 | Production | Latest |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+
| 5 | 206C0 | 13 [0, 1, 4] | FFFF001C | 2009-12-14 | Pre-Production | Latest |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+
| 6 | 206C1 | 03 [0, 1] | 6 | 2009-12-22 | Production | Latest |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+
| 7 | 206C2 | 03 [0, 1] | 1D | 2015-08-04 | Production | Latest |
Ā±ā€“Ā±------Ā±-------------Ā±---------Ā±-----------Ā±---------------Ā±---------+

After reading your post 138, my guess is that starting with 1.12.0, MC Extractor is now comparing also with higher platform number to find newer dates. If it find one, then than this is the one it should be replaced with. In my case, i should remove those 2 with platform 01 and 02 from my bios and replace them with just one with platform 03:

| 000106A4 | 00000003 | 00000013 | 20150630 | 00003800 | 35DDB232 |

Did i understand correctly or am i missing something?

I see. It is just whether the revision is negative or not. Yeah, youā€™re supposed to use signed comparison on microcode revisions, regardless of whether you display them as signed or unsigned numbersā€¦
Thanks for clarifying this.

@ all:

Just a heads up, the latest MC Extractor v1.13.0 fixes an important bug which skipped 2018+ microcodes. Previous version also fixed an Intel PRD/PRE oversight. You should update MCE if you use it.

@ Phoenix48:

The change you mention happened back at MCE v1.10.0. For the same CPUID (106A4) and same Release (PRD): Platform 01 = 0, Platform 02 = 1 and Platform 03 = 0,1. So yes, Platform 03 supersedes both 01 & 02. For example, a hypothetical Platform 04 would not as that equals to 2. So yes, you need to remove 106A4 PRD 01 and 02 and replace them with just 03.

v1.13.1

Fixed crash when converting Intel containers (thanks to @mbk1969 )
Fixed wrong file enumeration at command prompt
Fixed wrong Latest Yes/No status text display (thanks to @SoniX )

r52

cpu906EB_plat02_ver00000080_2018-01-04_PRD_D24EDB7F
cpu906EA_plat22_ver00000080_2018-01-04_PRD_84CABC68
cpu806EA_platC0_ver00000080_2018-01-04_PRD_F6263DAE
cpu706A1_plat01_ver00000022_2017-12-26_PRD_CA264967
cpu406C3_plat01_ver00000367_2017-12-25_PRD_C22C65F8
cpu506CA_plat03_ver00000008_2017-11-22_PRD_32F41375
cpu50663_plat10_ver07000011_2017-12-16_PRD_B17C1102
cpu50662_plat10_ver00000014_2017-12-16_PRD_9161527A
cpu50654_platB7_ver0200003C_2017-12-08_PRD_A4059069
cpu306E4_platED_ver0000042A_2017-12-01_PRD_9B215C1F
cpu10676_plat40_ver00000612_2015-08-02_PRD_B6F50E9C
cpu10676_plat04_ver00000612_2015-08-02_PRD_AEAA6CC1
cpu1067A_plat44_ver00000A0E_2015-07-29_PRD_A3107D75
cpu206F2_plat05_ver00000039_2015-07-26_PRD_5C4EB85E
cpu206E6_plat04_ver0000000B_2015-07-24_PRD_176A1E69
cpu206C2_plat03_ver0000001C_2015-06-27_PRD_CEBA2319

@ plutomaniac

How to correctly use option "-search"?
I can not find anything from the database.

scr1.JPG

@SoniX

I think i can help you with that one.

To find something with the -search command, you must add "000" before your CPUID #. Exemple: 206C2 must be entered as 000206C2 to generate a result.

I also noted that you must pay special attention to the letters. Exemple: 000206C2 will generate a result but 000206c2 will not.

Hope that help you.

scr1.JPG

As Phoenix48 said, all 8 digits and case sensitive. From command line, you can type directly -search CPUID (-skip implied). Example:

Menu:

Capture.PNG



CMD:

Capture1.PNG



Note:

I fixed a small issue at 1.13.2 so that the Date order is indeed DESC. You can fix it at the script yourselves for now by removing "date()" function and leaving "yyyymmdd" by itself.

Capture2.PNG

hello people! iā€™m new here and i donā€™t really understand how to use this tool, but i can see that thereā€™s a newer microcode for my motherboard / cpu. i have gigabyte ga-x58a-ud3r rev 1.0 mb + xeon w3670 cpu. from what iā€™ve been able to find on the internet this cpu should support CPUID (https://twitter.com/InstLatX64/status/950813380130082816). but it doesnā€™t seem so when i look at aida64. i donā€™t think gigabyte will release anything for a mobo this old. and that would be really bad news for me as this system still kicks some ass (running @ 4.2GHz). i am thinking that maybe updating the microcode would help. or am i wrong? and if not then how do i do that? :slight_smile: can someone please help me out? :slight_smile: what iā€™m trying to do is of course make it spectre and meltdown proof. iā€™m using this bios http://www.jzelectronic.de/jz2/jzb/x58aud3rf8b.exe. also hereā€™s some info from aida64:

CPUID Properties
CPUID Manufacturer GenuineIntel
CPUID CPU Name Intel(R) Xeon(R) CPU W3670 @ 3.20GHz
CPUID Revision 000206C2h
IA Brand ID 00h (Unknown)
Platform ID 47h / MC 01h (LGA1366)
Microcode Update Revision 14h
SMT / CMP Units 2 / 6
Tjmax Temperature 101 Ā°C (214 Ā°F)
CPU Thermal Design Power 130 W
CPU Thermal Design Current 110 A
Max Turbo Boost Multipliers 1C: 26x, 2C: 26x, 3C: 25x, 4C: 25x, 5C: 25x, 6C: 25x

Thaanks!


Why not just try to cast any input to hex number than format it to 8 digits uppercase before search in DB ?
Or as simple way - just uppercase and add leading zeros up to 8 chars total.

I donā€™t understand where the CPU microcodes are taken.

I have an Intel i5-460M CPU (CPUID 20655).
In the latest microcode update from Intel microcode-20180108.tgz there is the version 4 of the microcode for the above CPU

cpu20655_plat92_ver00000004_2013-06-28_PRD_3FACC649

but in the @plutomaniac microcode database https://github.com/platomav/CPUMicrocodes there is a newer one (version 5)

cpu20655_plat92_ver00000005_2015-06-30_PRD_470D62E6.bin

soā€¦ Iā€™d like to know where it was taken.

Could somebody please clarify this point?

Thank you.

itā€™s probably taken straight from another bios as i cannot find any microcodes that would fit my motherboard if i download microcodes from intel site but can find few in plutomaniacs microcode database. there would be no point to have this database if you could just obtain them from intel. just my guess :slight_smile:

@plutomaniac
hello, i was wondering whats the point of CPU micro-code ? iā€™m very interested on these topics, i have a ryzen cpu 1600. Also I started to get interest in Intel compiler patch that remove genuine codes over APP/Games resulting in better performance for AMD cpu, do you know anything about that? thanks

I think you are right, @paskevic

However, I just wonder how can I find out what is the source of a microcode in the database, how can I trust it and if itā€™s possible to find the ā€œchangelogā€ (or fixes and enhancements) of a certain microcode version.

In my case, there is e big difference, judging by the size of the file, between the microcode v. 5 in the database (about 45kB) and the one v. 4 in microcode-20180108.tgz (only about 3 kB).


Basically it is CPU firmware. Not everything is hardwired (hardcoded) there. Some parts execute so called microcode (CPU version specific program).




Ad. 1. You probably cant. That database is created by volunteers from which some work for BIOS makers. They have access to newest microcode before general public.
Ad. 2. If you have relatively new CPU (2013+) then it wasnā€™t proved that it is possible to alter these device microcode because it is cryptographically signed (http://inertiawar.com/microcode/).
Some changelogs can be found there: https://launchpad.net/ubuntu/+source/intā€¦code/+changelog
Ad. 3. You probably compare binary file (bin) to hexadecimal (dat).

Most of the latest Intel CPU microcodes revisions have just those changes:
* Implements IBRS and IBPB support via new MSR (Spectre variant 2 mitigation, indirect branches). Support is exposed through cpuid(7).EDX.
* LFENCE terminates all previous instructions (Spectre variant 2 mitigation, conditional branches).