You are not logged in.
I have installed Arch Linux a few weeks ago, and keep getting "random" hard freezes and shutdowns (almost daily, and for modest usage time).
I believe the problem is related to missing microcode for my Intel CPU.
My PC has:
Gigabite X99-Designare EX-CF motherboard
Intel i7-6850K CPU
NVIDIA GE Force GTX
2.7T WDC WD30EFRX-68EUZN0 hard disk -- where my Arch Linux OS is installed
Samsung SSD 960 EVO 500GB disk -- where my Windows 10 OS is installed
I have a "standard" Arch Linux installation, with no graphical environment, and use i3 as windows manager.
I see my CPU belongs to Family 6 (0x06), Model 79 (0x4f), Stepping 1 (0x01):
> head -8 /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Core(TM) i7-6850K CPU @ 3.60GHz
stepping : 1
microcode : 0xb000040
cpu MHz : 1200.000Hence, the microcode for my CPU -- here indicated as 0xb000040 - should be labelled as 06.4f.01.
I far as I understand, my CPU
Intel Core X-series processors
belongs to the Broadwell-E family, for which the wiki
https://wiki.archlinux.org/title/microcode
says that microcode update is mandatory:
Early loading updates the microcode very early during boot, before the initramfs stage [...]. This is mandatory for CPUs with severe hardware bugs, like the Intel Haswell and Broadwell processor families.
I have followed the wiki instructions at
https://wiki.archlinux.org/title/microcode
as per 2 LOADING MICROCODE and 2.1 EARLY LOADING.
When I run the command lsinitcpio I have the expected result:
> lsinitcpio --early /boot/initramfs-linux.img | grep kernel | head -4
kernel/
kernel/x86/
kernel/x86/microcode/
kernel/x86/microcode/GenuineIntel.binHowever, 06.4f.01 is missing from the list of CPUs whose microcode is currently made available from the package intel-ucode:
> ls /usr/lib/firmware/intel-ucode
06-03-02 06-08-0a 06-16-01 06-2d-06 06-46-01 06-56-05 06-8c-02 06-9c-00 06-ba-03 0f-03-02
06-05-00 06-09-05 06-17-06 06-2d-07 06-47-01 06-5c-02 06-8d-01 06-9e-09 06-ba-08 0f-03-03
06-05-01 06-0a-00 06-17-07 06-2e-06 06-4c-03 06-5c-09 06-8e-09 06-9e-0a 06-be-00 0f-03-04
06-05-02 06-0a-01 06-17-0a 06-2f-02 06-4c-04 06-5c-0a 06-8e-0a 06-9e-0b 06-bf-02 0f-04-01
06-05-03 06-0b-01 06-1a-04 06-37-08 06-4d-08 06-5e-03 06-8e-0b 06-9e-0c 06-bf-05 0f-04-03
06-06-00 06-0b-04 06-1a-05 06-37-09 06-4e-03 06-5f-01 06-8e-0c 06-9e-0d 06-cf-01 0f-04-04
06-06-05 06-0d-06 06-1c-02 06-3a-09 06-55-03 06-66-03 06-8f-05 06-a5-02 06-cf-02 0f-04-07
06-06-0a 06-0e-08 06-1c-0a 06-3c-03 06-55-04 06-6a-05 06-8f-06 06-a5-03 0f-00-07 0f-04-08
06-06-0d 06-0e-0c 06-1d-01 06-3d-04 06-55-05 06-6a-06 06-8f-07 06-a5-05 0f-00-0a 0f-04-09
06-07-01 06-0f-02 06-1e-05 06-3e-04 06-55-06 06-6c-01 06-8f-08 06-a6-00 0f-01-02 0f-04-0a
06-07-02 06-0f-06 06-25-02 06-3e-06 06-55-07 06-7a-01 06-96-01 06-a6-01 0f-02-04 0f-06-02
06-07-03 06-0f-07 06-25-05 06-3e-07 06-55-0b 06-7a-08 06-97-02 06-a7-01 0f-02-05 0f-06-04
06-08-01 06-0f-0a 06-26-01 06-3f-02 06-56-02 06-7e-05 06-97-05 06-aa-04 0f-02-06 0f-06-05
06-08-03 06-0f-0b 06-2a-07 06-3f-04 06-56-03 06-8a-01 06-9a-03 06-b7-01 0f-02-07 0f-06-08
06-08-06 06-0f-0d 06-2c-02 06-45-01 06-56-04 06-8c-01 06-9a-04 06-ba-02 0f-02-09Accordingly, running iucode_tool I get:
> iucode_tool -lS /usr/lib/firmware/intel-ucode
iucode_tool: system has processor(s) with signature 0x000406f1
microcode bundle 1: /usr/lib/firmware/intel-ucode/06-25-02
microcode bundle 2: /usr/lib/firmware/intel-ucode/06-8a-01
microcode bundle 3: /usr/lib/firmware/intel-ucode/06-08-03
...
microcode bundle 147: /usr/lib/firmware/intel-ucode/06-2d-07
microcode bundle 148: /usr/lib/firmware/intel-ucode/06-5e-03
microcode bundle 149: /usr/lib/firmware/intel-ucode/06-9e-0d
selected microcodes:
This apparently indicates that microcode for my Intel processor is not applied.
I had initially missed that.
The journal, on the other hand, tells me:
> journalctl -k | grep -i microcode
Aug 26 13:58:10 kernel: microcode: Current revision: 0x0b000040
Aug 26 13:58:10 kernel: microcode: Updated early from: 0x0b00001dThis is confusing, as it seems to indicate that some (CPU??) microcode has been applied.
Finally, I note that I have no kernel folder
kernel/x86/microcode/GenuineIntel.binwhere the microcode is supposed to be located (after it has been identified).
My questions:
Is my CPU's microcode being loaded correclty, or not at all?
If not, how and where do I get the microcode for my Intel i7-6850K CPU?
I am a Linux newbie, and you can imagine how frustrating all this is. I love Arch Linux, but cannot get it to work on my desktop.
It goes without saying that I have completed this past week several hardware (disk and memory) testing suggested in the wiki, but found no problem at all.
Last edited by Idefix 75 (2024-08-26 21:37:30)
Offline
/usr/lib/firmware/intel-ucode/06-4f-01 is not provided by the intel-ucode package to prevent late loading of that microcode. It is included as part of /boot/intel-ucode.img.
bsdtar -xf /boot/intel-ucode.img
ucode_tool -s 0x000406f1 ./kernel/x86/microcode/GenuineIntel.bin -l
microcode bundle 1: ./kernel/x86/microcode/GenuineIntel.bin
selected microcodes:
001/160: sig 0x000406f1, pf_mask 0xef, 2021-05-19, rev 0xb000040, size 35840Offline
Thanks!
Does this mean that the microcode was loaded early as required?
Do I need to move ./kernel/x86 to /kernel/x86?
Last edited by Idefix 75 (2024-08-26 21:31:18)
Offline
Does this mean that the microcode was loaded early as required?
Yes
Do I need to move ./kernel/x86/ to /kernel/x86?
There is no need to extract the microcode from /boot/intel-ucode.img as the journal shows that it is being used from there as expected.
Offline
Thank you, you were awesome!
The microcode was detected because I used grub-mkconfig to load /intel-ucode.img in the initial ramdisk.
Unfortunately, this means that I still have no idea of what causes my hard freezes.
Offline