Re: Intel Microcode loader, tg3 driver, and the -rc8-mmotd NewWorld Order firmware...

From: David Woodhouse
Date: Thu Jul 03 2008 - 08:46:25 EST


On Thu, 2008-07-03 at 07:44 +0100, Tigran Aivazian wrote:
> On Thu, 3 Jul 2008 Valdis.Kletnieks@xxxxxx wrote:
>
> > On Thu, 03 Jul 2008 07:17:16 BST, Tigran Aivazian said:
> >> Hi Valdis,
> >>
> >> On Wed, 2 Jul 2008 Valdis.Kletnieks@xxxxxx wrote:
> >>
> >>> I built the -rc8-mmotd kernel, and built it with 'CONFIG_FIRMWARE_IN_KERNEL
> > =n'.
> >>> Lo and behold, the microcode.ko was now doing a request_firmware for
> >>> 'intel-ucode/06-0f-06' (which makes sense, the Core2 Duo in this laptop is
> >>> family 6, model 15, stepping 6). However, what I had in /lib/firmware was
> >>> the Intel-distributed 'microcode.dat' with updates for all the CPUs (which
> >>> used to work in times past).
> >>>
> >>> What's the magic incantation to take the microcode.dat and create something
> >>> that the firmware driver is willing to use, or is this all borked up and
> >>> I need to do a major rethink or fix my config?
> >>
> >> that's because it expects the Intel-supplied microcode data and you are
> >> using the old style microcode.dat data.
> >
> > I fed it the stuff I downloaded today from this URL:
> >
> > http://downloadcenter.intel.com/filter_results.aspx?strTypes=all&ProductID=2643&OSFullName=Linux*â=eng&strOSs=39&submit=Go!
> >
> > which gets me a microcode-20080401.dat that does the same thing. Is there
> > some *other* Intel-supplied microcode data I should be getting instead?
>
> Oh, sorry, I assumed that Intel distribute the data in the format that
> driver expects.

I think the kernel _does_ manage to extract just the part it wants from
the data, but it expects the data in binary form. Drop the attached
files in /lib/udev/microcode.sh and /etc/udev/rules.d/51-microcode.rules
respectively. (There's probably a better way to handle this kind of
thing by putting hooks in firmware.sh rather than using a special rule
which overrides it?)

The recent firmware changes haven't modified this. The important change
seems to have been here (in 2006):

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a30a6a2c

--
dwmw2

Attachment: microcode.sh
Description: application/shellscript

# firmware requests for intel-ucode/* are satisfied by microcode_ctl
SUBSYSTEM=="firmware", ENV{FIRMWARE}=="intel-ucode/*", ACTION=="add", RUN="microcode.sh"