Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp3140278pxb; Mon, 18 Apr 2022 17:04:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPUo/yhTvd/8qGU+OZd2oLk7+PCVrH5oTUrSFaJuy2g0W2RHhbMqp/V4TKbrkp1BuqUaL6 X-Received: by 2002:a63:7c06:0:b0:398:31d5:f759 with SMTP id x6-20020a637c06000000b0039831d5f759mr12229857pgc.513.1650326674750; Mon, 18 Apr 2022 17:04:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650326674; cv=none; d=google.com; s=arc-20160816; b=bkEgPcOX4KN5lL4NkA71vYHjl3MKMGgnDQxthdJE+8CZgoBoYoen2/j+tvJT7pbLI0 IhUHHpEPfYtKQtN5YmiWHZDl8rBt6hAhic0ugZGPXjzTpKwF62Bz+3FRjE0rUTZD3sKx c9xRov4R9DeuMwe9Rn+EjowNjO2Ym1RGYWyXOr2zM+DkbN2JGzObfkpd4bypAp7z4HkZ 6EiPKuh0MyJeSC2n93/tohs4A9mCONszoaQtFle3iNu5QWt/hWIKORwqY4CUD9tfGlWk uB5TGs/pcNHuU9/ZTpz0RDvXkzgBe6ilNCFubBQAgejfw6X+Y6C3bVOEMO0VrIqjmpQ/ Bm+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=lujTVh35E/zjwebJfWbiDatScLS2SNFaZ9lXYomr6cQ=; b=PvvygKkuo5cIkEiJg8K+GDjmx7/aD/4DZpQt491A3JJEfppzMm51bMRf16LeD5m2/l RLM+8PidzT8cIjVXuqayBefDQkVYkOr4zs3T/WsloguB5ToyL1cuptfr3ClSdWolGMUX Pf/6MGSbgrha+IqZxCZIgaKEFveqUz7JsUmsdtofZPy6hk3bUSp7vBSYjwz9dqhBUY0M rHDXspoJUARPfxy1ifWUuK9d5MnY5vAM5ftIwm/NiecR9gtsP8pTMJxWU3wtgKY4J7rR 8pBr6150eligb79356Vv35a7aXpllrPQvDsY/Hsr+WG5FJ/o7IdnPvylrspc0cW13DXy fT5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=hXhg9Qfv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c10-20020aa7952a000000b004fa3a8e008asi10057189pfp.321.2022.04.18.17.04.18; Mon, 18 Apr 2022 17:04:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=hXhg9Qfv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344322AbiDRO0y (ORCPT + 99 others); Mon, 18 Apr 2022 10:26:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343860AbiDROPf (ORCPT ); Mon, 18 Apr 2022 10:15:35 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 214F3393CF; Mon, 18 Apr 2022 06:12:41 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C34E1B80EC0; Mon, 18 Apr 2022 13:12:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 255D8C385A1; Mon, 18 Apr 2022 13:12:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1650287548; bh=J83axoU7BMJmk7eft+LTP3W1l5BGR6Lr9WESzPipDng=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hXhg9Qfvkf5W/kyjj3tOiT1gCwUNspGxSAOG3s1by9grR1sr7Dm0t3iiqli6AHGXU t1GmLTfiJ+gohqOF0vrovyoW5Y6BSq2pdT9Y7jy1I8B21MpVfGsuHBfl+svVgBXYGx qYtjzBbrvecob90gPSjNtdupbrsrF3XQFprdMSUM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Neelima Krishnan , Pawan Gupta , Borislav Petkov , Dave Hansen , Linus Torvalds Subject: [PATCH 4.9 195/218] x86/speculation: Restore speculation related MSRs during S3 resume Date: Mon, 18 Apr 2022 14:14:21 +0200 Message-Id: <20220418121207.045167682@linuxfoundation.org> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220418121158.636999985@linuxfoundation.org> References: <20220418121158.636999985@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pawan Gupta commit e2a1256b17b16f9b9adf1b6fea56819e7b68e463 upstream. After resuming from suspend-to-RAM, the MSRs that control CPU's speculative execution behavior are not being restored on the boot CPU. These MSRs are used to mitigate speculative execution vulnerabilities. Not restoring them correctly may leave the CPU vulnerable. Secondary CPU's MSRs are correctly being restored at S3 resume by identify_secondary_cpu(). During S3 resume, restore these MSRs for boot CPU when restoring its processor state. Fixes: 772439717dbf ("x86/bugs/intel: Set proper CPU features and setup RDS") Reported-by: Neelima Krishnan Signed-off-by: Pawan Gupta Tested-by: Neelima Krishnan Acked-by: Borislav Petkov Reviewed-by: Dave Hansen Cc: stable@vger.kernel.org Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- arch/x86/power/cpu.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) --- a/arch/x86/power/cpu.c +++ b/arch/x86/power/cpu.c @@ -510,10 +510,24 @@ static int pm_cpu_check(const struct x86 return ret; } +static void pm_save_spec_msr(void) +{ + u32 spec_msr_id[] = { + MSR_IA32_SPEC_CTRL, + MSR_IA32_TSX_CTRL, + MSR_TSX_FORCE_ABORT, + MSR_IA32_MCU_OPT_CTRL, + MSR_AMD64_LS_CFG, + }; + + msr_build_context(spec_msr_id, ARRAY_SIZE(spec_msr_id)); +} + static int pm_check_save_msr(void) { dmi_check_system(msr_save_dmi_table); pm_cpu_check(msr_save_cpu_table); + pm_save_spec_msr(); return 0; }