Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5033075ybl; Tue, 14 Jan 2020 02:19:30 -0800 (PST) X-Google-Smtp-Source: APXvYqyiHl0lq7i71Yc01GXElMA+NC88DXMuond65h5TO+UtL/zQ/n6D6cdxanGrrvqeYgSJGyJf X-Received: by 2002:a9d:66ca:: with SMTP id t10mr16264582otm.352.1578997170730; Tue, 14 Jan 2020 02:19:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578997170; cv=none; d=google.com; s=arc-20160816; b=r+t32G6kmdFcYY/UpQeM0fLR1hSyA/IBfWb93MWirul8r5AHfxjiVclKrMYDrumMOG z2aHLZlH0IinuCM9K969iFGLKhCvrfnV2ozrxCkX7Rb8fVMV1y6su+3vozOOPpG/S3q1 B3mc05idTelv6O1k27rHX2RBlS1VqKucPYOfK7FAlAYXriW6eLpSU8ayfcf5KSEx6NfQ bjQCrzzMWZSBavuDUFC3ZMe8K1B3FAeLjmsZTHNxCwcI3I7fBBqxyHhupUZmBNN95HEo P+5YQyuhZEakumcQqBag04QgWz/1fmMQoxCIK5rSMWMZVeauK+nJfl8XiNl7pIr5ozFL N4ng== 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 :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=xhSt27LWNCv+MzQ07iB8G0jwdMaKpxn6IfdrrS80jdo=; b=X4X8om8C4s4UleYz2xXFfOR06+7udM3CRF0h8QFZz14vnRY2BLxY/O39zsln2nqtoP lu8IEnIJ4JRXZ96lpTcheRHSMQFuUWUqd4q0Wk3pnmx4Th8fmCf+yobdo0gl7WPIu8Ks nDA4Me9QlCUtLVYIOxMxcjnGv26KkIMVXSZk/SrgiI0FkRdZTwKI2c34nudEmzzvpipB PZ1iPlLpcOX/7Kte6BOqBlToXgdTLFe+Usj1DsRe3Dy+h3SBE+N7ne3nJ5s6/DEp1WSQ c2AhE37JK/e8goGP48rIXCSoZo1o4oEh9l7xhcPaA0icAh0fz2r7AGPpxhJu5BCFU3ky 95tw== ARC-Authentication-Results: i=1; mx.google.com; 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 a7si8381830otp.284.2020.01.14.02.19.19; Tue, 14 Jan 2020 02:19:30 -0800 (PST) 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; 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 S1731450AbgANKSG (ORCPT + 99 others); Tue, 14 Jan 2020 05:18:06 -0500 Received: from Galois.linutronix.de ([193.142.43.55]:42307 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729852AbgANKQ5 (ORCPT ); Tue, 14 Jan 2020 05:16:57 -0500 Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1irJFl-0007gB-1O; Tue, 14 Jan 2020 11:16:53 +0100 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id B45131C001A; Tue, 14 Jan 2020 11:16:52 +0100 (CET) Date: Tue, 14 Jan 2020 10:16:52 -0000 From: "tip-bot2 for Sean Christopherson" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: x86/cpu] x86/cpufeatures: Add flag to track whether MSR IA32_FEAT_CTL is configured Cc: Sean Christopherson , Borislav Petkov , x86 , LKML In-Reply-To: <20191221044513.21680-14-sean.j.christopherson@intel.com> References: <20191221044513.21680-14-sean.j.christopherson@intel.com> MIME-Version: 1.0 Message-ID: <157899701251.1022.4546938145887744610.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the x86/cpu branch of tip: Commit-ID: 85c17291e2eb4903bf73e5d3f588f41dbcc6f115 Gitweb: https://git.kernel.org/tip/85c17291e2eb4903bf73e5d3f588f41dbcc6f115 Author: Sean Christopherson AuthorDate: Fri, 20 Dec 2019 20:45:07 -08:00 Committer: Borislav Petkov CommitterDate: Mon, 13 Jan 2020 18:49:00 +01:00 x86/cpufeatures: Add flag to track whether MSR IA32_FEAT_CTL is configured Add a new feature flag, X86_FEATURE_MSR_IA32_FEAT_CTL, to track whether IA32_FEAT_CTL has been initialized. This will allow KVM, and any future subsystems that depend on IA32_FEAT_CTL, to rely purely on cpufeatures to query platform support, e.g. allows a future patch to remove KVM's manual IA32_FEAT_CTL MSR checks. Various features (on platforms that support IA32_FEAT_CTL) are dependent on IA32_FEAT_CTL being configured and locked, e.g. VMX and LMCE. The MSR is always configured during boot, but only if the CPU vendor is recognized by the kernel. Because CPUID doesn't incorporate the current IA32_FEAT_CTL value in its reporting of relevant features, it's possible for a feature to be reported as supported in cpufeatures but not truly enabled, e.g. if the CPU supports VMX but the kernel doesn't recognize the CPU. As a result, without the flag, KVM would see VMX as supported even if IA32_FEAT_CTL hasn't been initialized, and so would need to manually read the MSR and check the various enabling bits to avoid taking an unexpected #GP on VMXON. Signed-off-by: Sean Christopherson Signed-off-by: Borislav Petkov Link: https://lkml.kernel.org/r/20191221044513.21680-14-sean.j.christopherson@intel.com --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kernel/cpu/feat_ctl.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index e9b6249..67d21b2 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -220,6 +220,7 @@ #define X86_FEATURE_ZEN ( 7*32+28) /* "" CPU is AMD family 0x17 (Zen) */ #define X86_FEATURE_L1TF_PTEINV ( 7*32+29) /* "" L1TF workaround PTE inversion */ #define X86_FEATURE_IBRS_ENHANCED ( 7*32+30) /* Enhanced IBRS */ +#define X86_FEATURE_MSR_IA32_FEAT_CTL ( 7*32+31) /* "" MSR IA32_FEAT_CTL configured */ /* Virtualization flags: Linux defined, word 8 */ #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */ diff --git a/arch/x86/kernel/cpu/feat_ctl.c b/arch/x86/kernel/cpu/feat_ctl.c index fcbb355..24a4fdc 100644 --- a/arch/x86/kernel/cpu/feat_ctl.c +++ b/arch/x86/kernel/cpu/feat_ctl.c @@ -126,6 +126,8 @@ void init_ia32_feat_ctl(struct cpuinfo_x86 *c) wrmsrl(MSR_IA32_FEAT_CTL, msr); update_caps: + set_cpu_cap(c, X86_FEATURE_MSR_IA32_FEAT_CTL); + if (!cpu_has(c, X86_FEATURE_VMX)) return;