Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964841AbeAJC2m (ORCPT + 1 other); Tue, 9 Jan 2018 21:28:42 -0500 Received: from mga14.intel.com ([192.55.52.115]:47271 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964816AbeAJC2l (ORCPT ); Tue, 9 Jan 2018 21:28:41 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,337,1511856000"; d="scan'208";a="192164813" From: Andi Kleen To: tglx@linutronix.de Cc: x86@kernel.org, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, dwmw@amazon.co.uk, pjt@google.com, luto@kernel.org, peterz@infradead.org, thomas.lendacky@amd.com, tim.c.chen@linux.intel.com, gregkh@linux-foundation.org, dave.hansen@intel.com, jikos@kernel.org, Andi Kleen Subject: [PATCH v3 1/3] x86/retpoline: Add X86_FEATURE_RETPOLINE_GENERIC Date: Tue, 9 Jan 2018 18:28:29 -0800 Message-Id: <20180110022831.29826-2-andi@firstfloor.org> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180110022831.29826-1-andi@firstfloor.org> References: <20180110022831.29826-1-andi@firstfloor.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: From: Andi Kleen On 64bit we want to split X86_FEATURE_RETPOLINE and X86_FEATURE_RETPOLINE_AMD, so that only one is set. This enables new simpler ALTERNATIVE sequences. But 32bit requires a common flag because it uses common code for both. Rename the existing X86_FEATURE_RETPOLINE to X86_FEATURE_GENERIC Use the existing X86_FEATURE_RETPOLINE as a common flag that is set for both the AMD and generic Retpoline. Then don't set the generic RETPOLINE flag for AMD. Signed-off-by: Andi Kleen --- arch/x86/include/asm/cpufeatures.h | 3 ++- arch/x86/kernel/cpu/bugs.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index f275447862f4..9db5ed0e01a9 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -203,7 +203,7 @@ #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ #define X86_FEATURE_SME ( 7*32+10) /* AMD Secure Memory Encryption */ #define X86_FEATURE_PTI ( 7*32+11) /* Kernel Page Table Isolation enabled */ -#define X86_FEATURE_RETPOLINE ( 7*32+12) /* Generic Retpoline mitigation for Spectre variant 2 */ +#define X86_FEATURE_RETPOLINE_GENERIC ( 7*32+12) /* Generic Retpoline mitigation for Spectre variant 2 */ #define X86_FEATURE_RETPOLINE_AMD ( 7*32+13) /* AMD Retpoline mitigation for Spectre variant 2 */ #define X86_FEATURE_INTEL_PPIN ( 7*32+14) /* Intel Processor Inventory Number */ #define X86_FEATURE_INTEL_PT ( 7*32+15) /* Intel Processor Trace */ @@ -211,6 +211,7 @@ #define X86_FEATURE_AVX512_4FMAPS ( 7*32+17) /* AVX-512 Multiply Accumulation Single precision */ #define X86_FEATURE_MBA ( 7*32+18) /* Memory Bandwidth Allocation */ +#define X86_FEATURE_RETPOLINE ( 7*32+19) /* Common code for both RETPOLINE_GENERIC and RETPOLINE_AMD */ /* Virtualization flags: Linux defined, word 8 */ #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */ diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index b957f771a5b7..68b08967a6e1 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -155,6 +155,7 @@ void __init spectre_v2_check_boottime_disable(void) retpoline_generic: spectre_v2_enabled = retp_compiler() ? SPECTRE_V2_RETPOLINE_GENERIC : SPECTRE_V2_RETPOLINE_MINIMAL; + setup_force_cpu_cap(X86_FEATURE_RETPOLINE_GENERIC); } setup_force_cpu_cap(X86_FEATURE_RETPOLINE); return; @@ -165,8 +166,9 @@ void __init spectre_v2_check_boottime_disable(void) pr_err("kernel not compiled with retpoline; no mitigation available!"); #endif disable: - setup_clear_cpu_cap(X86_FEATURE_RETPOLINE); + setup_clear_cpu_cap(X86_FEATURE_RETPOLINE_GENERIC); setup_clear_cpu_cap(X86_FEATURE_RETPOLINE_AMD); + setup_clear_cpu_cap(X86_FEATURE_RETPOLINE); return; } -- 2.14.3