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

Issue with extracted microcode files and MMTool #3

Closed
ms178 opened this issue Mar 4, 2017 · 10 comments
Closed

Issue with extracted microcode files and MMTool #3

ms178 opened this issue Mar 4, 2017 · 10 comments

Comments

@ms178
Copy link

@ms178 ms178 commented Mar 4, 2017

Thanks a lot for your useful tool! I was looking for the newest Intel Xeon 5600 Series microcode (206C2) today and I used your tool to extract the microcode of an Intel S55xx BIOS file (R0068) as well as one HP server board (SP75718) which both include a more recent version 1D (2015/08/04) than what I could find on the web otherwise. Your tool tells me that this is not the most up-to-date version though and I wanted to suggest to provide the version number and the date of the newest one as well in your tool which would be very useful. By the way, the official files from Intel for Linux don't provide this particular microcode.

As I tried to integrate the extracted *.bin-file in the BIOS of my motherboard (Asus P6X58D-E) with MMTool (3.26 and 3.19 Mod 21-Fix), the tool rejects it with an error message: "This is not a valid CPU microcode patch file". I get this error with some of the official Intel Linux files as well, but some do work. Hence I can't say for sure if it is an issue of your tool or MMTool. Is there another easy to use method to integrate the *.bin-files into this particular AMI BIOS?

@platomav
Copy link

@platomav platomav commented Mar 5, 2017

I wanted to suggest to provide the version number and the date of the newest one as well

Once you know if your microcode is updated or not, you can search with the CPUID and you'll see a list of all relevant DB entries. The parameter is -search and you can enter 000206C2.

the official files from Intel for Linux don't provide this particular microcode

Yes, the official releases from AMD, Intel and Microsoft's Windows libraries are often out of date. That's yet another reason why the DB and new microcode reports are so useful.

I get this error with some of the official Intel Linux files as well

You answered that question yourself, these are MMTool errors and not relevant to MCE. For Intel and VIA, the microcode binaries have checksums so MCE can verify the integrity of each extracted microcode. The files are proper, it's just that MMTool is kind of a bad utility, especially for its cost.

Is there another easy to use method to integrate the *.bin-files into this particular AMI BIOS?

You can use UEFITool to find where the microcodes are stored with a search or similar, extract the module, replace etc. Try your luck asking or searching for these questions at Win-Raid or similar forums.

@ms178
Copy link
Author

@ms178 ms178 commented Mar 5, 2017

Once you know if your microcode is updated or not, you can search with the CPUID and you'll see a list of all relevant DB entries. The parameter is -search and you can enter 000206C2.

Sorry, I have missed that. :)

Thanks for all the other hints! Unfortunetly, it is still an older board without UEFI support thus UEFITool didn't work.

platomav added a commit that referenced this issue Mar 6, 2017
Logical bug which caused wrong detection of whether a microcode is Latest or Outdated in some cases. Thank you @ms178 (#3) for the report.
@platomav
Copy link

@platomav platomav commented Mar 6, 2017

Your tool tells me that this is not the most up-to-date version though

You are right! MCE had a logical bug which caused wrong detection of whether a microcode is Latest or Outdated in some cases. I thought you were referring to version 14 and not 1D which is indeed the latest and should be reported as such by MCE. Bug fixed at 55c5785. Thank you for the report.

the tool rejects it with an error message: "This is not a valid CPU microcode patch file"

Take the latest 206C2, version 1D, which has a size of 0x2400 and append 0x400 of 0x00 padding at the end to make its size 0x2800. MMTool should accept it then.

@drizzlerR
Copy link

@drizzlerR drizzlerR commented Mar 6, 2017

this fix works with 3.26. 3.22 does not accept it

@ms178
Copy link
Author

@ms178 ms178 commented Mar 6, 2017

Thanks, again. That was my first contribution to a software project ever. :)

@platomav
Copy link

@platomav platomav commented Mar 6, 2017

this fix works with 3.26. 3.22 does not accept it

Maybe but it doesn't matter as this is not related to MCE at all. It was just a one-time off-topic comment. People can find on their own the minimum sizes that are acceptable by tools such as MMTool or similar.

That was my first contribution to a software project ever.

And a useful one indeed, thank you. Also for using MCE. Since your original problem/report is now fixed/answered, I will go ahead and close this issue.

@nikallian
Copy link

@nikallian nikallian commented May 6, 2021

HI Platon,

how do I do this?

Take the latest 206C2, version 1D, which has a size of 0x2400 and append 0x400 of 0x00 padding at the end to make its size 0x2800. MMTool should accept it then.

Thank you !

@JanCernyCZ
Copy link

@JanCernyCZ JanCernyCZ commented May 7, 2021

@nikallian just use hex editor.

@nikallian
Copy link

@nikallian nikallian commented May 7, 2021

Hi,

Yep, I have HxD but how do I do padding without destroying the file ? Where to put those bytes in order to change the file size? I'm not a programmer :)

Thanks in advance!

@JanCernyCZ
Copy link

@JanCernyCZ JanCernyCZ commented May 9, 2021

Me neither. Open microcode file with HexEdit, scroll down to the end of the last line. Click on Edit -> Insert Block -> Fill with Hex: 00 (= 0x00), data by 1024 bytes. The final file size must be divisible by 4096.

size
206c2-1F-microcodes.zip

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

5 participants