FS#11961 - Intel microcode update fails

Attached to Project: Arch Linux
Opened by Andrej Podzimek (andrej) - Saturday, 01 November 2008, 12:00 GMT
Last edited by Roman Kyrylych (Romashka) - Monday, 26 January 2009, 11:10 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Tobias Powalowski (tpowa)
Thomas Bächler (brain0)
Architecture i686
Severity High
Priority Normal
Reported Version None
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

Microcode update fails on a dual Pentium III server. Works normally on my Pentium-M laptop. (Same kernel version, same microcode_ctl.)

Additional info:

The file intel-ucode/06-0b-01 mentioned in error logs has *never* been there. Neither on the laptop, nor on the server. Microcode update used to work just fine without it on the laptop. All the firmware data should be in /etc/microcode.dat, AFAIK. Created a symlink /lib/firmware/intel-ucode/06-0b-01 -> /etc/microcode.dat, but that failed, too. (Well, presumably...) See the logs below.

* package version(s)

kernel 2.6.27.4 vanilla
microcode_ctl 1.17.20080910-1

* config and/or log files etc.

Without the symlink to /etc/microcode.dat

Nov 1 12:45:32 charon IA-32 Microcode Update Driver: v1.14a <tigran@aivazian.fsnet.co.uk>
Nov 1 12:45:32 charon firmware: requesting intel-ucode/06-0b-01
Nov 1 12:45:32 charon firmware: requesting intel-ucode/06-0b-01
Nov 1 12:45:32 charon firmware.sh[5807]: Cannot find firmware file 'intel-ucode/06-0b-01'
Nov 1 12:45:32 charon load-modules.sh: 'platform:microcode' is not a valid module or alias name
Nov 1 12:45:32 charon firmware.sh[5821]: Cannot find firmware file 'intel-ucode/06-0b-01'

With the symlink to /etc/microcode.dat

Nov 1 12:44:11 charon IA-32 Microcode Update Driver: v1.14a <tigran@aivazian.fsnet.co.uk>
Nov 1 12:44:11 charon firmware: requesting intel-ucode/06-0b-01
Nov 1 12:44:11 charon load-modules.sh: 'platform:microcode' is not a valid module or alias name
Nov 1 12:44:11 charon microcode: error! Bad data in microcode data file
Nov 1 12:44:11 charon firmware: requesting intel-ucode/06-0b-01
Nov 1 12:44:12 charon microcode: error! Bad data in microcode data file

Steps to reproduce: Try to load CPU microcode on IMB xSeries 330.
This task depends upon

Closed by  Roman Kyrylych (Romashka)
Monday, 26 January 2009, 11:10 GMT
Reason for closing:  Not a bug
Comment by Attila (attila) - Monday, 03 November 2008, 06:20 GMT
I recognized the same lines as you in /var/log/everything.log and in my case it complains about coretemp too:

load-modules.sh: 'platform:microcode' is not a valid module or alias name
firmware.sh[4302]: Cannot find firmware file 'intel-ucode/06-0f-06'
firmware.sh[4321]: Cannot find firmware file 'intel-ucode/06-0f-06'
load-modules.sh: 'platform:coretemp' is not a valid module or alias name
load-modules.sh: 'platform:coretemp' is not a valid module or alias name

But my dmesg output looks fine so i don't look longer for a solution of it:

IA-32 Microcode Update Driver: v1.14a <tigran@aivazian.fsnet.co.uk>
firmware: requesting intel-ucode/06-0f-06
firmware: requesting intel-ucode/06-0f-06
microcode: CPU0 updated from revision 0x44 to 0xcb, date = 09162007
microcode: CPU1 updated from revision 0x44 to 0xcb, date = 09162007
coretemp coretemp.0: Using relative temperature scale!
coretemp coretemp.1: Using relative temperature scale!

I hope your dmesg output will have the same positive results and than only one expert can say what this output from firmware.sh and load-modules.sh means.
Comment by Andrej Podzimek (andrej) - Monday, 03 November 2008, 08:07 GMT
There is no such positive message in my case. Obviously, nothing gets updated here. Your issue is probably different and much less serious.
This is what happens in my case:

1) The microcode module gets loaded.
2) The module asks a userspace daemon (udevd) to find and load the microcode.
3) The module outputs 'requesting intel-ucode...' and *waits* *forever*.
4) Now udevd calls the script firmware.sh, which is supposed to load the microcode by simply copying it into a file in /sys.
5) The script fails. Nothing surprising, as the requested microcode image does not exist. (However, my laptop doesn't mind...)
6) The microcode module just keeps waiting for its data all the time and does not update anything.

Different machines (with exactly the same files and versions installed) behave differently:
On a Pentium-M, there is an update message similar to the one you can see. There are no script failures, although the requested microcode image doe *not* exist. It works, although it definitely should *not* work.
On a (dual) Pentium III, the script fails and nothing gets updated.
Comment by Attila (attila) - Monday, 03 November 2008, 16:29 GMT
Sorry, that you don't have the same positive results as mine.

Have you ever tried to see at http://downloadcenter.intel.com/default.aspx if there is a microcode data file? I tried it with the input "Core Duo", than in the next page i choose "All Operating Systems" in the pulldown and after this i can download a data file. But with "Pentium III" as the input i don't get the same. Have the microcode script worked for you before or is this the first time that you try it? But it would be strange if there is no micrcode data file for your cpu.
Comment by Thomas Bächler (brain0) - Tuesday, 02 December 2008, 08:32 GMT
What you experience is normal: There was the "idea" to split the microcode.dat in small, CPU-specific files that would be loaded by the firmware loader (named intel-ucode/AA-BB-CC), thus getting rid of the update tool. This was implemented in the driver, however these files were never published anywhere. This means you'll see the "Cannot find firmware file" message every time you load the microcode module.

The microcode_ctl tool is still able to update the ucode (from microcode.dat) and unless '/etc/rc.d/microcode start' returns a "FAIL" message, it has been successfully updated (or not updated if it was already up2date).

Loading...