From: Borislav Petkov <bp@alien8.de>
To: X86 ML <x86@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH 2/2] x86/microcode: Do not exit early from __reload_late()
Date: Sat, 21 Apr 2018 10:19:30 +0200 [thread overview]
Message-ID: <20180421081930.15741-2-bp@alien8.de> (raw)
In-Reply-To: <20180421081930.15741-1-bp@alien8.de>
From: Borislav Petkov <bp@suse.de>
Vitezslav reported a case where the
"Timeout during microcode update!"
panic would hit. After a deeper look, it turned out that his .config had
CONFIG_HOTPLUG_CPU disabled which practically made save_mc_for_early() a
no-op.
When that happened, the discovered microcode patch wasn't saved into our
cache and the late loading path wouldn't find any.
This, then, lead to early exit from __reload_late() and thus CPUs
waiting until the timeout is reached, leading to the panic.
In hindsight, I should've made that function not return before the
post-synchronization. Oh well, I know better now...
Reported-by: Vitezslav Samel <vitezslav@samel.cz>
Tested-by: Vitezslav Samel <vitezslav@samel.cz>
Tested-by: Ashok Raj <ashok.raj@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: <stable@vger.kernel.org>
Fixes: bb8c13d61a62 ("x86/microcode: Fix CPU synchronization routine")
Link: http://lkml.kernel.org/r/20180418081140.GA2439@pc11.op.pod.cz
---
arch/x86/kernel/cpu/microcode/core.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
index 10c4fc2c91f8..77e201301528 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -564,14 +564,12 @@ static int __reload_late(void *info)
apply_microcode_local(&err);
spin_unlock(&update_lock);
+ /* siblings return UCODE_OK because their engine got updated already */
if (err > UCODE_NFOUND) {
pr_warn("Error reloading microcode on CPU %d\n", cpu);
- return -1;
- /* siblings return UCODE_OK because their engine got updated already */
+ ret = -1;
} else if (err == UCODE_UPDATED || err == UCODE_OK) {
ret = 1;
- } else {
- return ret;
}
/*
--
2.13.0
next prev parent reply other threads:[~2018-04-21 8:20 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-18 8:11 4.15.17 regression: bisected: timeout during microcode update Vitezslav Samel
2018-04-18 10:07 ` Borislav Petkov
2018-04-18 12:08 ` Vitezslav Samel
2018-04-18 12:22 ` Borislav Petkov
2018-04-18 13:53 ` Raj, Ashok
2018-04-18 16:14 ` Borislav Petkov
2018-04-19 5:35 ` Vitezslav Samel
2018-04-19 7:22 ` Raj, Ashok
2018-04-19 10:48 ` Borislav Petkov
2018-04-19 12:02 ` Vitezslav Samel
2018-04-19 12:18 ` Borislav Petkov
2018-04-19 12:32 ` Raj, Ashok
2018-04-19 13:48 ` Vitezslav Samel
2018-04-19 13:46 ` Vitezslav Samel
2018-04-19 16:37 ` Borislav Petkov
2018-04-20 6:20 ` Vitezslav Samel
2018-04-20 9:52 ` Borislav Petkov
2018-04-20 10:01 ` Vitezslav Samel
2018-04-20 10:32 ` Borislav Petkov
2018-04-20 10:34 ` [PATCH 1/2] x86/microcode/intel: Save microcode patch unconditionally Borislav Petkov
2018-04-20 10:54 ` Vitezslav Samel
2018-04-20 15:59 ` Raj, Ashok
2018-04-20 10:37 ` [PATCH 2/2] x86/microcode: Do not exit early from __reload_late() Borislav Petkov
2018-04-20 10:54 ` Vitezslav Samel
2018-04-20 16:00 ` Raj, Ashok
2018-04-21 8:19 ` [PATCH 1/2] x86/microcode/intel: Save microcode patch unconditionally Borislav Petkov
2018-04-21 8:19 ` Borislav Petkov [this message]
2018-04-24 7:52 ` [tip:x86/urgent] x86/microcode: Do not exit early from __reload_late() tip-bot for Borislav Petkov
2018-04-24 7:51 ` [tip:x86/urgent] x86/microcode/intel: Save microcode patch unconditionally tip-bot for Borislav Petkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180421081930.15741-2-bp@alien8.de \
--to=bp@alien8.de \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox