# "iucode_tool -S -l ..." advices 2 files

## toralf

At an i7-3930 I do get 

```
iucode_tool -S -l /lib/firmware/intel-ucode/*

...

selected microcodes:

  045/001: sig 0x000206d6, pf_mask 0x6d, 2012-05-22, rev 0x0619, size 16384

  046/001: sig 0x000206d7, pf_mask 0x6d, 2013-06-17, rev 0x0710, size 17408

```

Which is the right one ?

----------

## Jaglover

I'd use the latter, 046.

----------

## bunder

I got three for my laptop...

```
selected microcodes:

  070/001: sig 0x000906e9, pf_mask 0x2a, 2017-04-06, rev 0x005e, size 97280

  071/001: sig 0x000906ea, pf_mask 0x22, 2017-08-23, rev 0x0070, size 95232

  072/001: sig 0x000906eb, pf_mask 0x02, 2017-09-20, rev 0x0072, size 97280

```

except 72 doesn't load, so I put all three into the kernel, and found out that 71 doesn't load either.   :Confused: 

----------

## toralf

 *bunder wrote:*   

> so I put all three into the kernel, and found out that 71 doesn't load either.  

 I can only put 1 into it :

```
CONFIG_EXTRA_FIRMWARE="intel-ucode/06-45-01"

```

(no genkernel, no initramfs, straight vanilla kernel)

----------

## The Main Man

I always thought you should put one that matches signature, no matter the rest on the selected microcodes list.

----------

## Jaglover

The way I see it all variants listed are for the same CPU, the ones dated later are upgrades, so it makes sense to use the latest.

----------

## bunder

 *toralf wrote:*   

>  *bunder wrote:*   so I put all three into the kernel, and found out that 71 doesn't load either.   I can only put 1 into it :
> 
> ```
> CONFIG_EXTRA_FIRMWARE="intel-ucode/06-45-01"
> 
> ...

 

you can specify many firmware files, separated by spaces...   :Wink: 

```
CONFIG_EXTRA_FIRMWARE="intel-ucode/06-9e-0b intel-ucode/06-9e-0a intel-ucode/06-9e-09 i915/kbl_dmc_ver1.bin i915/kbl_dmc_ver1_01.bin i915/kbl_dmc_ver1_04.bin i915/kbl_guc_ver9_14.bin i915/kbl_guc_ver9_39.bin i915/kbl_huc_ver02_00_1810.bin intel/dsp_fw_kbl.bin intel/dsp_fw_kbl_v2042.bin intel/dsp_fw_kbl_v2630.bin intel/ibt-hw-37.8.bseq intel/ibt-hw-37.8.10-fw-22.50.19.14.f.bseq iwlwifi-3168-21.ucode iwlwifi-3168-22.ucode iwlwifi-3168-27.ucode iwlwifi-3168-29.ucode rtl_nic/rtl8411-1.fw rtl_nic/rtl8411-2.fw"
```

----------

## Jaglover

^^ True, but why build them all in if only some are used.

----------

## bunder

Just a quick update, I upgraded to the -r1 bundle and got a new microcode...

```
selected microcodes:

  070/001: sig 0x000906e9, pf_mask 0x2a, 2017-12-03, rev 0x007c, size 98304

  071/001: sig 0x000906ea, pf_mask 0x22, 2017-08-23, rev 0x0070, size 95232

  072/001: sig 0x000906eb, pf_mask 0x02, 2017-09-20, rev 0x0072, size 97280

```

71 and 72 still don't load, but the new 70 seems to get me what I'm after.  Not sure why I see the other ones here, pretty sure 70 was the only one I saw in previous versions of intel-microcode.

 *Quote:*   

> True, but why build them all in if only some are used.

 

I'll probably take them out if/when I recompile the kernel again now that I know they don't do me any good.    :Cool: 

----------

## Aiken

The 1st line from iucode_tool shows the signature of the running cpu. Wouldn't you select the file that matches that signature when multiple files are shown?

```

~ # iucode_tool -S -l /lib/firmware/intel-ucode/*

iucode_tool: system has processor(s) with signature 0x000906e9

microcode bundle 1: /lib/firmware/intel-ucode/06-03-02

.

.

microcode bundle 94: /lib/firmware/intel-ucode/0f-06-08

selected microcodes:

  070/001: sig 0x000906e9, pf_mask 0x2a, 2017-12-03, rev 0x007c, size 98304

  071/001: sig 0x000906ea, pf_mask 0x22, 2017-08-23, rev 0x0070, size 95232

  072/001: sig 0x000906eb, pf_mask 0x02, 2017-09-20, rev 0x0072, size 97280

```

This is from a machine that has not been up been updated to sys-firmware/intel-microcode-20180108. The microcode that was used on that computer was the file whose signature matched the cpu signature listed at the top of the iucode_tool output.

----------

## jasn

I have the same issue with my i7-7700K system. With sys-firmware/intel-microcode-20180108-r1, the iucode_tool identifies three microcodes;

```
iucode_tool -S -l /lib/firmware/intel-ucode/*

iucode_tool: system has processor(s) with signature 0x000906e9

[...]

microcode bundle 70: /lib/firmware/intel-ucode/06-9e-09

microcode bundle 71: /lib/firmware/intel-ucode/06-9e-0a

microcode bundle 72: /lib/firmware/intel-ucode/06-9e-0b

[...]

selected microcodes:

  070/001: sig 0x000906e9, pf_mask 0x2a, 2018-01-04, rev 0x0080, size 98304

  071/001: sig 0x000906ea, pf_mask 0x22, 2018-01-04, rev 0x0080, size 97280

  072/001: sig 0x000906eb, pf_mask 0x02, 2018-01-04, rev 0x0080, size 98304
```

However, if I use

```
MICROCODE_SIGNATURES="-s 0x000906e9"
```

in my /etc/portage/make.conf, reinstalling sys-firmware/intel-microcode only installs;

```
-rw-r--r--  1 root root 98304 Jan 14 22:59 06-9e-09
```

So should I be configuring all three kernel firmware blobs?

```
CONFIG_EXTRA_FIRMWARE="intel-ucode/06-9e-09 intel-ucode/06-9e-0a intel-ucode/06-9e-0b"
```

or just the one?

```
CONFIG_EXTRA_FIRMWARE="intel-ucode/06-9e-09"
```

I've currently got all three configured as in kernel blobs. Does this dmesg output mean that just the intel-ucode/06-9e-09" is loading?

```
dmesg |grep microcode

[    0.000000] microcode: microcode updated early to revision 0x80, date = 2018-01-04

[    1.015812] microcode: sig=0x906e9, pf=0x2, revision=0x80

[    1.016617] microcode: Microcode Update Driver: v2.2.
```

Last edited by jasn on Thu Jan 18, 2018 3:33 pm; edited 1 time in total

----------

## Jaglover

Aiken got it right, you need to match the CPU, something I overlooked. Credits go to Aiken!

----------

## jasn

Makes sense to match the signature. I changed my kernel config to load only the one matching firmware blob, and my dmesg output is identical.

----------

## BT

 *jasn wrote:*   

> However, if I use
> 
> ```
> MICROCODE_SIGNATURES="-S0x000906e9"
> ```
> ...

 

The correct usage when selecting a specific signature is:

```
MICROCODE_SIGNATURES="-s 0x000906e9"
```

Note the use of the lower case '-s' option.

----------

## josephg

 *BT wrote:*   

>  *jasn wrote:*   However, if I use
> 
> ```
> MICROCODE_SIGNATURES="-S0x000906e9"
> ```
> ...

 

i would like more info.. is this documented somewhere?

----------

## BT

 *josephg wrote:*   

>  *BT wrote:*    *jasn wrote:*   However, if I use
> 
> ```
> MICROCODE_SIGNATURES="-S0x000906e9"
> ```
> ...

 

man iucode_tool

----------

## jasn

 *BT wrote:*   

>  *jasn wrote:*   However, if I use
> 
> ```
> MICROCODE_SIGNATURES="-S0x000906e9"
> ```
> ...

 

Thanks!

This was a forum post mistake on my part. Fixed it now.

----------

## josephg

 *BT wrote:*   

>  *josephg wrote:*    *BT wrote:*   The correct usage when selecting a specific signature is:
> 
> ```
> MICROCODE_SIGNATURES="-s 0x000906e9"
> ```
> ...

 

i'm asking about MICROCODE_SIGNATURES= in /etc/portage/make.conf

no mention in "man iucode_tool" or "man make.conf"

----------

## BT

 *josephg wrote:*   

> i'm asking about MICROCODE_SIGNATURES= in /etc/portage/make.conf
> 
> no mention in "man iucode_tool" or "man make.conf"

 

MICROCODE_SIGNATURES was introduced with sys-firmware/intel-microcode-20180108-r1. It is documented in the git log, ebuild comments, and the Intel Microcode wiki.

----------

## josephg

BT, thank you for the references. i must've missed this on the wiki.. been on there so many times recently each time new version was released.

i would have expected this package to have a package specific useflag, rather than a global make.conf setting just for one package.. or does this setting affect for than this one package?

also, ebuild says this is sufficient for current cpu

```
MICROCODE_SIGNATURES="-S"
```

----------

