From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933222AbeAJB4W (ORCPT + 1 other); Tue, 9 Jan 2018 20:56:22 -0500 Received: from mga02.intel.com ([134.134.136.20]:36075 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933042AbeAJB4T (ORCPT ); Tue, 9 Jan 2018 20:56:19 -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="18843666" 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 v2 1/2] x86/retpoline: Add X86_FEATURE_RETPOLINE_COMMON and split RETPLINE/RETPOLINE_AMD Date: Tue, 9 Jan 2018 17:56:00 -0800 Message-Id: <20180110015601.27370-1-andi@firstfloor.org> X-Mailer: git-send-email 2.14.3 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. So add a new X86_FEATURE_RETPOLINE_COMMON that is always set when either X86_FEATURE_RETPOLINE or X86_FEATURE_RETPOLINE_AMD are set. And then unset X86_FEATURE_RETPOLINE for AMD. Signed-off-by: Andi Kleen --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kernel/cpu/bugs.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index f275447862f4..54ec16ef08d8 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -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_COMMON ( 7*32+19) /* Common code for both RETPOLINE 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..241eae66a86b 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -155,8 +155,10 @@ 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); } - setup_force_cpu_cap(X86_FEATURE_RETPOLINE); + setup_force_cpu_cap(X86_FEATURE_RETPOLINE_COMMON); + return; #else retpoline: @@ -167,6 +169,7 @@ void __init spectre_v2_check_boottime_disable(void) disable: setup_clear_cpu_cap(X86_FEATURE_RETPOLINE); setup_clear_cpu_cap(X86_FEATURE_RETPOLINE_AMD); + setup_clear_cpu_cap(X86_FEATURE_RETPOLINE_COMMON); return; } -- 2.14.3