Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2279268imc; Tue, 12 Mar 2019 10:27:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqx7XHKTcak/7Z7mxalMkcSK+oV6QvMNYbOJFCGMYXyBdVNXP6G3C2CamcPnqWubVflZCUhg X-Received: by 2002:a63:c64c:: with SMTP id x12mr36240355pgg.285.1552411675484; Tue, 12 Mar 2019 10:27:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552411675; cv=none; d=google.com; s=arc-20160816; b=i+N54KpUnXNk0iU33aFuNVflJzFX6m17EdciftJojyiChHe6/NyFeLHZdZB5SYSfSc I4cfAAL3F8LekVFbg9obomCJbAEoZ6erEZHTu3WYqTaZpD7j0ZDgeZnHZoI6V1aI5Ob6 0pgC+jAwGpg1x+WHWa6Z7kZQp7HKZLw2+4ZuI0kNTFgC1sCb5sSd6pl2wnFhkQzTFVbQ fDJfmYLGNPUdjQtYs2N8sxMzacoJ3QNKF/lenVDzSv9ZK+ZrWaFBuf7sVqpj0be8/PlP T3Lq7X6eH3V7eS3KsI7Zbq3dH9ETa6ijcW5vmmFJgFCJqz7yajB61LUurntbwymt8Rgu yc2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=96ZdWjRy1f/OnmkT4iEU0KcWqUXE1BDTjmYWT55ye9g=; b=PNeCe/CjRJjKcQ1pZnKspInPeEgYCWpMGBTSvpELfP0I8csEF6/5tdPBDkV82JPvtF VguwZFJCZcmL6x4dRCxNXPjR4L7cRl9hutkp2+mPgTU4anMsoNxneqAEa4cJz6gvMgp9 N8EEMRYjjROCQj6VqBy238hXtR1QlcY7KzfKNBHDsbW/gkiyyWEmv+RUTe/6cedZ9Z3w c4AiliJQQm+c+7UsfamNWYBS8Qz0GLX0bzCfAWDdjaxnrzj5ox1mJ4LZZn8h3OSghLeD 8GijNCbWsUGqLcb2niRpEO3I/GhwR2OPSQ67GAyxy/6M2R9GNwVzsC0wDmCtV4xuOGFj PRIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=TbxzZf4x; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s198si7504733pgs.582.2019.03.12.10.27.39; Tue, 12 Mar 2019 10:27:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=TbxzZf4x; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729728AbfCLRRm (ORCPT + 99 others); Tue, 12 Mar 2019 13:17:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:58900 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729197AbfCLRQf (ORCPT ); Tue, 12 Mar 2019 13:16:35 -0400 Received: from localhost (unknown [104.133.8.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id E05F321741; Tue, 12 Mar 2019 17:16:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552410995; bh=LPhwsHS/86d0nhBrogUoPpDSezQD+PoFkRYZzfGDi+M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TbxzZf4xO28xgxIklJpgcY5VRg56Ed9uEffu5LlwDw05VXnhJmNQ90hlSaw9oBQ7O Hh2TaVX6cIgDSORmRAS8lGSiW+CO7dJmMmrataFzQv/lDUV/nJbZ0d0M7GoHFuGyyg 0LnWVM/xpdrzr5XFMHQ/M7hnD58Z0lQPKnjEcQWc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tom Lendacky , Borislav Petkov , "H. Peter Anvin" , Ingo Molnar , Thomas Gleixner , x86-ml , Sasha Levin Subject: [PATCH 4.14 076/135] x86/microcode/amd: Dont falsely trick the late loading mechanism Date: Tue, 12 Mar 2019 10:08:43 -0700 Message-Id: <20190312170348.202859950@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190312170341.127810985@linuxfoundation.org> References: <20190312170341.127810985@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 912139cfbfa6a2bc1da052314d2c29338dae1f6a ] The load_microcode_amd() function searches for microcode patches and attempts to apply a microcode patch if it is of different level than the currently installed level. While the processor won't actually load a level that is less than what is already installed, the logic wrongly returns UCODE_NEW thus signaling to its caller reload_store() that a late loading should be attempted. If the file-system contains an older microcode revision than what is currently running, such a late microcode reload can result in these misleading messages: x86/CPU: CPU features have changed after loading microcode, but might not take effect. x86/CPU: Please consider either early loading through initrd/built-in or a potential BIOS update. These messages were issued on a system where SME/SEV are not enabled by the BIOS (MSR C001_0010[23] = 0b) because during boot, early_detect_mem_encrypt() is called and cleared the SME and SEV features in this case. However, after the wrong late load attempt, get_cpu_cap() is called and reloads the SME and SEV feature bits, resulting in the messages. Update the microcode level check to not attempt microcode loading if the current level is greater than(!) and not only equal to the current patch level. [ bp: massage commit message. ] Fixes: 2613f36ed965 ("x86/microcode: Attempt late loading only when new microcode is present") Signed-off-by: Tom Lendacky Signed-off-by: Borislav Petkov Cc: "H. Peter Anvin" Cc: Ingo Molnar Cc: Thomas Gleixner Cc: x86-ml Link: https://lkml.kernel.org/r/154894518427.9406.8246222496874202773.stgit@tlendack-t1.amdoffice.net Signed-off-by: Sasha Levin --- arch/x86/kernel/cpu/microcode/amd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index 9d33dbf2489e..d0a61d3e2fb9 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c @@ -707,7 +707,7 @@ load_microcode_amd(bool save, u8 family, const u8 *data, size_t size) if (!p) { return ret; } else { - if (boot_cpu_data.microcode == p->patch_id) + if (boot_cpu_data.microcode >= p->patch_id) return ret; ret = UCODE_NEW; -- 2.19.1