From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935163AbeAORQH (ORCPT + 1 other); Mon, 15 Jan 2018 12:16:07 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46934 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933322AbeAORQF (ORCPT ); Mon, 15 Jan 2018 12:16:05 -0500 Date: Mon, 15 Jan 2018 11:15:54 -0600 From: Josh Poimboeuf To: Peter Zijlstra Cc: David Woodhouse , linux-kernel@vger.kernel.org, Dave Hansen , Ashok Raj , Thomas Gleixner , Tim Chen , Andy Lutomirski , Linus Torvalds , Greg KH , Andrea Arcangeli , Andi Kleen , Arjan Van De Ven , Dan Williams , Paolo Bonzini , Jun Nakajima , Asit Mallick , Borislav Petkov Subject: Re: [PATCH 4/4] x86: Reindent _static_cpu_has Message-ID: <20180115171554.35c4zhwiry4a7auq@treble> References: <20180115164428.498966552@infradead.org> <20180115164909.949786209@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180115164909.949786209@infradead.org> User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 15 Jan 2018 17:16:05 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On Mon, Jan 15, 2018 at 05:44:32PM +0100, Peter Zijlstra wrote: > Because its daft.. > > Cc: Josh Poimboeuf > Cc: Thomas Gleixner > Cc: Borislav Petkov > Signed-off-by: Peter Zijlstra (Intel) > --- > arch/x86/include/asm/cpufeature.h | 78 +++++++++++++++++++------------------- > 1 file changed, 39 insertions(+), 39 deletions(-) > > --- a/arch/x86/include/asm/cpufeature.h > +++ b/arch/x86/include/asm/cpufeature.h > @@ -145,45 +145,45 @@ extern void clear_cpu_cap(struct cpuinfo > */ > static __always_inline __pure bool _static_cpu_has(u16 bit) > { > - asm_volatile_goto("1: jmp 6f\n" > - "2:\n" > - ".skip -(((5f-4f) - (2b-1b)) > 0) * " > - "((5f-4f) - (2b-1b)),0x90\n" > - "3:\n" > - ".section .altinstructions,\"a\"\n" > - " .long 1b - .\n" /* src offset */ > - " .long 4f - .\n" /* repl offset */ > - " .word %P1\n" /* always replace */ > - " .byte 3b - 1b\n" /* src len */ > - " .byte 5f - 4f\n" /* repl len */ > - " .byte 3b - 2b\n" /* pad len */ > - ".previous\n" > - ".section .altinstr_replacement,\"ax\"\n" > - "4: jmp %l[t_no]\n" > - "5:\n" > - ".previous\n" > - ".section .altinstructions,\"a\"\n" > - " .long 1b - .\n" /* src offset */ > - " .long 0\n" /* no replacement */ > - " .word %P0\n" /* feature bit */ > - " .byte 3b - 1b\n" /* src len */ > - " .byte 0\n" /* repl len */ > - " .byte 0\n" /* pad len */ > - ".previous\n" > - ".section .altinstr_aux,\"ax\"\n" > - "6:\n" > - " testb %[bitnum],%[cap_byte]\n" > - " jnz %l[t_yes]\n" > - " jmp %l[t_no]\n" > - ".previous\n" > - : : "i" (bit), "i" (X86_FEATURE_ALWAYS), > - [bitnum] "i" (1 << (bit & 7)), > - [cap_byte] "m" (((const char *)boot_cpu_data.x86_capability)[bit >> 3]) > - : : t_yes, t_no); > - t_yes: > - return true; > - t_no: > - return false; > + asm_volatile_goto("1: jmp 6f\n" > + "2:\n" > + ".skip -(((5f-4f) - (2b-1b)) > 0) * " > + "((5f-4f) - (2b-1b)),0x90\n" > + "3:\n" > + ".section .altinstructions,\"a\"\n" > + " .long 1b - .\n" /* src offset */ > + " .long 4f - .\n" /* repl offset */ > + " .word %P1\n" /* always replace */ > + " .byte 3b - 1b\n" /* src len */ > + " .byte 5f - 4f\n" /* repl len */ > + " .byte 3b - 2b\n" /* pad len */ > + ".previous\n" > + ".section .altinstr_replacement,\"ax\"\n" > + "4: jmp %l[t_no]\n" > + "5:\n" > + ".previous\n" > + ".section .altinstructions,\"a\"\n" > + " .long 1b - .\n" /* src offset */ > + " .long 0\n" /* no replacement */ > + " .word %P0\n" /* feature bit */ > + " .byte 3b - 1b\n" /* src len */ > + " .byte 0\n" /* repl len */ > + " .byte 0\n" /* pad len */ > + ".previous\n" > + ".section .altinstr_aux,\"ax\"\n" > + "6:\n" > + " testb %[bitnum],%[cap_byte]\n" > + " jnz %l[t_yes]\n" > + " jmp %l[t_no]\n" > + ".previous\n" > + : : "i" (bit), "i" (X86_FEATURE_ALWAYS), > + [bitnum] "i" (1 << (bit & 7)), > + [cap_byte] "m" (((const char *)boot_cpu_data.x86_capability)[bit >> 3]) > + : : t_yes, t_no); > +t_yes: > + return true; > +t_no: > + return false; While you're at it, might as well convert the feature bit constraints to have names like %P[name] instead of %P0 and %P1? -- Josh