Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753536AbeADWRD (ORCPT + 1 other); Thu, 4 Jan 2018 17:17:03 -0500 Received: from merlin.infradead.org ([205.233.59.134]:54522 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752550AbeADWRC (ORCPT ); Thu, 4 Jan 2018 17:17:02 -0500 Date: Thu, 4 Jan 2018 23:16:45 +0100 From: Peter Zijlstra To: Tim Chen Cc: Thomas Gleixner , Andy Lutomirski , Linus Torvalds , Greg KH , Dave Hansen , Andrea Arcangeli , Andi Kleen , Arjan Van De Ven , linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/7] x86/enter: MACROS to set/clear IBRS Message-ID: <20180104221645.GC32035@hirez.programming.kicks-ass.net> References: <032e71e3826ed92523e9070fffa7108392848dc6.1515086770.git.tim.c.chen@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <032e71e3826ed92523e9070fffa7108392848dc6.1515086770.git.tim.c.chen@linux.intel.com> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Thu, Jan 04, 2018 at 09:56:43AM -0800, Tim Chen wrote: > diff --git a/arch/x86/include/asm/spec_ctrl.h b/arch/x86/include/asm/spec_ctrl.h > new file mode 100644 > index 0000000..16fc4f58 > --- /dev/null > +++ b/arch/x86/include/asm/spec_ctrl.h Does this really have to live outside of arch/x86/entry/ ? > +.macro ENABLE_IBRS > + ALTERNATIVE "jmp 10f", "", X86_FEATURE_SPEC_CTRL > + PUSH_MSR_REGS > + WRMSR_ASM $MSR_IA32_SPEC_CTRL, $SPEC_CTRL_FEATURE_ENABLE_IBRS > + POP_MSR_REGS > +10: > +.endm > + > +.macro DISABLE_IBRS > + ALTERNATIVE "jmp 10f", "", X86_FEATURE_SPEC_CTRL > + PUSH_MSR_REGS > + WRMSR_ASM $MSR_IA32_SPEC_CTRL, $SPEC_CTRL_FEATURE_DISABLE_IBRS > + POP_MSR_REGS > +10: > +.endm > + > +.macro ENABLE_IBRS_CLOBBER > + ALTERNATIVE "jmp 10f", "", X86_FEATURE_SPEC_CTRL > + WRMSR_ASM $MSR_IA32_SPEC_CTRL, $SPEC_CTRL_FEATURE_ENABLE_IBRS > +10: > +.endm > + > +.macro DISABLE_IBRS_CLOBBER > + ALTERNATIVE "jmp 10f", "", X86_FEATURE_SPEC_CTRL > + WRMSR_ASM $MSR_IA32_SPEC_CTRL, $SPEC_CTRL_FEATURE_DISABLE_IBRS > +10: > +.endm > + > +.macro ENABLE_IBRS_SAVE_AND_CLOBBER save_reg:req > + ALTERNATIVE "jmp 10f", "", X86_FEATURE_SPEC_CTRL > + movl $MSR_IA32_SPEC_CTRL, %ecx > + rdmsr > + movl %eax, \save_reg > + > + movl $0, %edx > + movl $SPEC_CTRL_FEATURE_ENABLE_IBRS, %eax > + wrmsr > +10: > +.endm > + > +.macro RESTORE_IBRS_CLOBBER save_reg:req > + ALTERNATIVE "jmp 10f", "", X86_FEATURE_SPEC_CTRL > + /* Set IBRS to the value saved in the save_reg */ > + movl $MSR_IA32_SPEC_CTRL, %ecx > + movl $0, %edx whitespace damage > + movl \save_reg, %eax > + wrmsr > +10: > +.endm Should not all those 10 things look like .Ldone_\@ or something ?