Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Microcode update attempt, unbootable (Meltdown-related)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware
View previous topic :: View next topic  
Author Message
gordonp
Tux's lil' helper
Tux's lil' helper


Joined: 23 May 2005
Posts: 102

PostPosted: Mon Jan 22, 2018 6:48 pm    Post subject: Microcode update attempt, unbootable (Meltdown-related) Reply with quote

Hi -

I have an older ASUS P6T motherboard, with a Xeon hex-core CPU (presenting as 12 Linux "processing units"). This runs kvm/QEMU to host a half-dozen virtual-machines. Generally it works well. From /proc/cpuinfo:
Code:
model name   : Intel(R) Xeon(R) CPU           X5680  @ 3.33GHz

With the arrival of Meltdown/Spectre, I followed the Gentoo wiki page for Intel microcode updating, for two other, more-recent workstations:
Code:
https://wiki.gentoo.org/wiki/Intel_microcode

With the success of these two more-recent workstations, I decided to try microcode updating for my server. What I got was an non-booting system :-(

I followed the wiki *to the letter*. I use genkernel + initramfs, but I also performed the indicated modifications to /etc/grub.d/10_linux. This same approach worked on the two more-recent workstations...

Part-way through boot-up, my system halted entirely, with a message along the lines:
Code:
Unable to find /boot/early_ucode.cpio

Hmmm... something went wrong :-(

I tried a couple more times - using a Gentoo RescueCD and chroot. Believe me, I strictly followed that wiki to the letter, and it continually failed.

A day later, after ripping out the microcode-updating stuff and rescuing my system, I Googled more widely, and now see that there is no microcode for my CPU:
Code:
hydra ~ # iucode_tool -S -l /lib/firmware/intel-ucode/*
iucode_tool: system has processor(s) with signature 0x000206c2
microcode bundle 1: /lib/firmware/intel-ucode/06-03-02
microcode bundle 2: /lib/firmware/intel-ucode/06-05-00
microcode bundle 3: /lib/firmware/intel-ucode/06-05-01
microcode bundle 4: /lib/firmware/intel-ucode/06-05-02
microcode bundle 5: /lib/firmware/intel-ucode/06-05-03
microcode bundle 6: /lib/firmware/intel-ucode/06-06-00
microcode bundle 7: /lib/firmware/intel-ucode/06-06-05
microcode bundle 8: /lib/firmware/intel-ucode/06-06-0a
microcode bundle 9: /lib/firmware/intel-ucode/06-06-0d
microcode bundle 10: /lib/firmware/intel-ucode/06-07-01
microcode bundle 11: /lib/firmware/intel-ucode/06-07-02
microcode bundle 12: /lib/firmware/intel-ucode/06-07-03
microcode bundle 13: /lib/firmware/intel-ucode/06-08-01
microcode bundle 14: /lib/firmware/intel-ucode/06-08-03
microcode bundle 15: /lib/firmware/intel-ucode/06-08-06
microcode bundle 16: /lib/firmware/intel-ucode/06-08-0a
microcode bundle 17: /lib/firmware/intel-ucode/06-09-05
microcode bundle 18: /lib/firmware/intel-ucode/06-0a-00
microcode bundle 19: /lib/firmware/intel-ucode/06-0a-01
microcode bundle 20: /lib/firmware/intel-ucode/06-0b-01
microcode bundle 21: /lib/firmware/intel-ucode/06-0b-04
microcode bundle 22: /lib/firmware/intel-ucode/06-0d-06
microcode bundle 23: /lib/firmware/intel-ucode/06-0e-08
microcode bundle 24: /lib/firmware/intel-ucode/06-0e-0c
microcode bundle 25: /lib/firmware/intel-ucode/06-0f-02
microcode bundle 26: /lib/firmware/intel-ucode/06-0f-06
microcode bundle 27: /lib/firmware/intel-ucode/06-0f-07
microcode bundle 28: /lib/firmware/intel-ucode/06-0f-0a
microcode bundle 29: /lib/firmware/intel-ucode/06-0f-0b
microcode bundle 30: /lib/firmware/intel-ucode/06-0f-0d
microcode bundle 31: /lib/firmware/intel-ucode/06-16-01
microcode bundle 32: /lib/firmware/intel-ucode/06-17-06
microcode bundle 33: /lib/firmware/intel-ucode/06-17-07
microcode bundle 34: /lib/firmware/intel-ucode/06-17-0a
microcode bundle 35: /lib/firmware/intel-ucode/06-1a-04
microcode bundle 36: /lib/firmware/intel-ucode/06-1a-05
microcode bundle 37: /lib/firmware/intel-ucode/06-1c-02
microcode bundle 38: /lib/firmware/intel-ucode/06-1c-0a
microcode bundle 39: /lib/firmware/intel-ucode/06-1d-01
microcode bundle 40: /lib/firmware/intel-ucode/06-1e-05
microcode bundle 41: /lib/firmware/intel-ucode/06-25-02
microcode bundle 42: /lib/firmware/intel-ucode/06-25-05
microcode bundle 43: /lib/firmware/intel-ucode/06-26-01
microcode bundle 44: /lib/firmware/intel-ucode/06-2a-07
microcode bundle 45: /lib/firmware/intel-ucode/06-2d-06
microcode bundle 46: /lib/firmware/intel-ucode/06-2d-07
microcode bundle 47: /lib/firmware/intel-ucode/06-2f-02
microcode bundle 48: /lib/firmware/intel-ucode/06-3a-09
microcode bundle 49: /lib/firmware/intel-ucode/06-3c-03
microcode bundle 50: /lib/firmware/intel-ucode/06-3d-04
microcode bundle 51: /lib/firmware/intel-ucode/06-3e-04
microcode bundle 52: /lib/firmware/intel-ucode/06-3e-06
microcode bundle 53: /lib/firmware/intel-ucode/06-3e-07
microcode bundle 54: /lib/firmware/intel-ucode/06-3f-02
microcode bundle 55: /lib/firmware/intel-ucode/06-3f-04
microcode bundle 56: /lib/firmware/intel-ucode/06-45-01
microcode bundle 57: /lib/firmware/intel-ucode/06-46-01
microcode bundle 58: /lib/firmware/intel-ucode/06-47-01
microcode bundle 59: /lib/firmware/intel-ucode/06-4e-03
microcode bundle 60: /lib/firmware/intel-ucode/06-4f-01
microcode bundle 61: /lib/firmware/intel-ucode/06-55-04
microcode bundle 62: /lib/firmware/intel-ucode/06-56-02
microcode bundle 63: /lib/firmware/intel-ucode/06-56-03
microcode bundle 64: /lib/firmware/intel-ucode/06-56-04
microcode bundle 65: /lib/firmware/intel-ucode/06-5c-09
microcode bundle 66: /lib/firmware/intel-ucode/06-5e-03
microcode bundle 67: /lib/firmware/intel-ucode/06-7a-01
microcode bundle 68: /lib/firmware/intel-ucode/06-8e-09
microcode bundle 69: /lib/firmware/intel-ucode/06-8e-0a
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
microcode bundle 73: /lib/firmware/intel-ucode/0f-00-07
microcode bundle 74: /lib/firmware/intel-ucode/0f-00-0a
microcode bundle 75: /lib/firmware/intel-ucode/0f-01-02
microcode bundle 76: /lib/firmware/intel-ucode/0f-02-04
microcode bundle 77: /lib/firmware/intel-ucode/0f-02-05
microcode bundle 78: /lib/firmware/intel-ucode/0f-02-06
microcode bundle 79: /lib/firmware/intel-ucode/0f-02-07
microcode bundle 80: /lib/firmware/intel-ucode/0f-02-09
microcode bundle 81: /lib/firmware/intel-ucode/0f-03-02
microcode bundle 82: /lib/firmware/intel-ucode/0f-03-03
microcode bundle 83: /lib/firmware/intel-ucode/0f-03-04
microcode bundle 84: /lib/firmware/intel-ucode/0f-04-01
microcode bundle 85: /lib/firmware/intel-ucode/0f-04-03
microcode bundle 86: /lib/firmware/intel-ucode/0f-04-04
microcode bundle 87: /lib/firmware/intel-ucode/0f-04-07
microcode bundle 88: /lib/firmware/intel-ucode/0f-04-08
microcode bundle 89: /lib/firmware/intel-ucode/0f-04-09
microcode bundle 90: /lib/firmware/intel-ucode/0f-04-0a
microcode bundle 91: /lib/firmware/intel-ucode/0f-06-02
microcode bundle 92: /lib/firmware/intel-ucode/0f-06-04
microcode bundle 93: /lib/firmware/intel-ucode/0f-06-05
microcode bundle 94: /lib/firmware/intel-ucode/0f-06-08
selected microcodes:
hydra ~ #

Do I get this boot-failure because no applicable microcode was located? The failure-message appears accurate (early_ucode.cpio does not exist). However, I do have this file in /boot:
Code:
-rw-r--r--  1 root root 1614848 Jan 21 16:45 intel-uc.img

This passes the "sniff" test, being present, appropriately-named and a little bit larger than my usual initramfs file. Everything seems like it should at least boot, even if no processor-specific microcode exists for my CPU...

Can the Gentoo wiki please be updated to handle this situation? I can only imagine the heart-ache that someone less-experienced in rescuing systems would have :-O :-(
Back to top
View user's profile Send private message
The_Great_Sephiroth
Veteran
Veteran


Joined: 03 Oct 2014
Posts: 1602
Location: Fayetteville, NC, USA

PostPosted: Mon Jan 22, 2018 7:32 pm    Post subject: Reply with quote

This is why I build my microcode, drivers, and driver firmware directly into the kernel. I have not used an initramfs in years, with the exception being on systems using whole-disk BTRFS RAID. If you were to specify an firmware file which did not exist, the kernel would not even build due to the missing file, and you could solve this ahead of time.
_________________
Ever picture systemd as what runs "The Borg"?
Back to top
View user's profile Send private message
gordonp
Tux's lil' helper
Tux's lil' helper


Joined: 23 May 2005
Posts: 102

PostPosted: Mon Jan 22, 2018 8:31 pm    Post subject: Reply with quote

The_Great_Sephiroth wrote:
This is why I build my microcode <...> directly into the kernel


Your approach and suggestion is a good one...

Which makes me add: Can the Gentoo Intel Microcode Wiki be updated to include this built-into-kernel option? It would also prove helpful if the Wiki suggests verification-steps to check that things are sane (and that the system will likely boot!).

Thank-you,
Back to top
View user's profile Send private message
Jaglover
Watchman
Watchman


Joined: 29 May 2005
Posts: 8291
Location: Saint Amant, Acadiana

PostPosted: Mon Jan 22, 2018 8:41 pm    Post subject: Reply with quote

Last time I checked there was a section in Gentoo Wiki about building microcode into kernel. Is it gone now? 8O
_________________
My Gentoo installation notes.
Please learn how to denote units correctly!
Back to top
View user's profile Send private message
gordonp
Tux's lil' helper
Tux's lil' helper


Joined: 23 May 2005
Posts: 102

PostPosted: Mon Jan 22, 2018 8:48 pm    Post subject: Reply with quote

Jaglover wrote:
<...>there was a section in Gentoo Wiki about building microcode into kerne


OK - yes, this section is present (at this time, the "build into kernel" is the last portion of the wiki-page). It is very similar to what I currently do for ATI/AMD graphics.

But I wonder if it will work or hang at boot, when my specific CPU appears to have no available microcode? (and this question made me Google more, and I see there are a number of microcode updates issues several years ago for my Xeon X5680... but the current Gentoo 20180108 doesn't match anything...????).

Thanks, @Jaglover, for pointing out that in-kernel options are included!
Back to top
View user's profile Send private message
xming
Guru
Guru


Joined: 02 Jul 2002
Posts: 441

PostPosted: Mon Aug 20, 2018 5:00 am    Post subject: Reply with quote

see https://forums.gentoo.org/viewtopic-t-1058246-start-0.html
_________________
http://wojia.be
Back to top
View user's profile Send private message
Naib
Watchman
Watchman


Joined: 21 May 2004
Posts: 6051
Location: Removed by Neddy

PostPosted: Mon Aug 20, 2018 12:58 pm    Post subject: Reply with quote

Has your motherboard manufacturer provided an updated bios?
It might be worth applying that as it should come with the latest microcode *if* your CPU is still supported AND if your motherboard is still supported.

Failing that the baking into the kernel is my personal preference method as I don't like initramfs.

As to why your steps failed... The lack of a file shouldn't stop a machine booting UNLESS your initramfs contains more than just microcode. I use to use Plymouth (before 3seconds boot showed it was useless :) ) but when I was testing it wasn't for finding the file stated in grub.cfg BUT my system still booted as it wasn't really needed to hand over to init.

So either
1) your initramfs does more than ucode and is needed to boot
2) the ucode that was applied was accepted by the CPU but is invalid - shouldn't happen as it checks
_________________
Quote:
Removed by Chiitoo
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum