[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-users] ucode=-1: did anybody have success?

Sorry for my delay - I was away for a couple of days ...

Am 06.05.14 23:35, schrieb Sven Köhler:
Am 06.05.2014 21:39, schrieb Atom2:
Am 06.05.14 15:27, schrieb Sven Köhler:
Or maybe the file is taken from /lib/firmware/intel-ucode/ and is copied
to the initrd when it is updates?
The truth is that you can't use the microcode.dat file directly - this
is a text file whereas the CPU expects a binary file.

It's a pity the hypervisor doesn't understand the microcode.dat format.

You should be able
to do 'cat /lib/firmware/intel_ucode/* > /boot/microcode.blob'
and that should do it - although I have used another approach that
results in a much smaller blob file: My file is now onyl 10,240 bytes as
opposed to 576,512 bytes compared to cat /lib/firmware/... as described
above) as it only contains the required binary files for my specific CPU:

The "cat /lib/firmware/intel_ucode/* > /boot/microcode.blob"-approach
seems dangerous to me. Are you sure, that simply concatenating the files
leaves you with a valid database?
I assume you have already read the answer straight from the horse's mouth: According to Konrad this is safe and I fully trust him on this (and many more things XEN).

I think it's safer to use the iucode-tool. The following command simply
converts microcode.dat to the binary format, right?

   ./iucode_tool -w /boot/microcode.blob /lib/firmware/microcode.dat
Right. The -w defines the name of the output file and failing any other option iucode_tool will merge all binary files described in microcode.dat into a binary blob file (named microcode.blob).

Can you confirm that /lib/firmware/intel-ucode/06-25-02 (for example)
is the file that contains all microcode for a CPU of family 6, model
37=0x25, and stepping 2 (which according to /proc/cpuinfo is the CPU I
have in my laptop, for example). These files already exist and are very
To be honest, I don't know and I think it is much safer to let iucode_tool do the magic in selecting those files required for your specific CPU model by adding the -S option. The reason I did not investigate on this is that I was not sure whether there is a 1:1 relation between "family & model" / "stepping" and "signature" / "pf [processor flags] mask" which seems to be the relevant piece of information to select the relevant files from (see -s [that is: lowercase 's'] option of iucode_tool).

But if you really want to get to the grounds of Intel's naming schema, you could always use the -S option (for the CPU you run iucode_tool on) and crosscheck its output with those files you came up with based on family/model and stepping.

I have used a tool called 'iucode-tool' to convert the Intel
distribution files to the blob binary file (I decided to name it
microcode.bin and that's what I use in the module line above). This tool
has a number of options that allow to include only those parts of the
microcode patches that are required for your specific CPU model (it is
able to scan for your CPU or you can provide the model as a command line

To include only the microcode for my CPU, I have to use the -S option of
iucode-tool, right?
Right - see above.

Your best bet is to check whether your distribution offers iucode-tool
and install it. Failing this you can also download the source and
compile it (I had to do this for gentoo) - that was pretty easy.

I'm using Gentoo too. I will request an ebuild for iucode-tool. Maybe I
can also convince the microcode-data maintainer to install a binary BLOB
in addition to microcode.dat (depending on some use-flag).
I have seen that - no answer up to now ...

Hope this helps,

You helped a lot!


Xen-users mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.