Bug 88001
Summary: | Microcode-update not re-applied to boot-CPU after resume from suspend | ||
---|---|---|---|
Product: | Power Management | Reporter: | alex.schnaidt |
Component: | Hibernation/Suspend | Assignee: | Borislav Petkov (bp) |
Status: | CLOSED CODE_FIX | ||
Severity: | high | CC: | arekm, bp, evangelos, fweimer, marius, thomas, vapier |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
URL: | https://bugs.archlinux.org/task/42689 | ||
Kernel Version: | 3.17.2-1-ARCH | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: | test patch |
Description
alex.schnaidt
2014-11-10 20:44:28 UTC
SMT systems exposing multiple logical cpus, aka hyper-threading, don't suffer from this issue since all logical cpus share the microcode. If cpu0 and cpu1 are part of the same core/cpu and cpu0, as the boot-cpu, doesn't receive the microcode update directly, it will still be updated by way of cpu1 post-resume. This doesn't "solve" the problem, it just hides it on SMT systems. This behavior was confirmed by several people and i mention it here in case the behavior in the original post wasn't reproducible for someone. Hmm, so we're not updating on resume, does the attached patch fix the issue? Thanks. Created attachment 157641 [details]
test patch
With the patch the boot-cpu also receives the microcode-update after resume and everything seems to work as expected: # cpuid | egrep '(HLE|RTM)' HLE hardware lock elision = false RTM: restricted transactional memory = false HLE hardware lock elision = false RTM: restricted transactional memory = false HLE hardware lock elision = false RTM: restricted transactional memory = false HLE hardware lock elision = false RTM: restricted transactional memory = false # dmesg | grep microcode [ 0.000000] CPU0 microcode updated early to revision 0x1c, date = 2014-07-03 [ 0.105384] CPU1 microcode updated early to revision 0x1c, date = 2014-07-03 [ 0.125910] CPU2 microcode updated early to revision 0x1c, date = 2014-07-03 [ 0.146426] CPU3 microcode updated early to revision 0x1c, date = 2014-07-03 [ 0.328417] microcode: CPU0 sig=0x306c3, pf=0x2, revision=0x1c [ 0.328424] microcode: CPU1 sig=0x306c3, pf=0x2, revision=0x1c [ 0.328429] microcode: CPU2 sig=0x306c3, pf=0x2, revision=0x1c [ 0.328434] microcode: CPU3 sig=0x306c3, pf=0x2, revision=0x1c [ 0.328467] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba <SUSPEND> [ 75.855695] CPU0 microcode updated early to revision 0x1c, date = 2014-07-03 [ 75.866809] CPU1 microcode updated early to revision 0x1c, date = 2014-07-03 [ 75.880812] CPU2 microcode updated early to revision 0x1c, date = 2014-07-03 [ 75.894756] CPU3 microcode updated early to revision 0x1c, date = 2014-07-03 Good, thanks for testing. I'll add your Tested-by: tag to the patch. Closing. |