From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965678AbcAUTF6 (ORCPT ); Thu, 21 Jan 2016 14:05:58 -0500 Received: from terminus.zytor.com ([198.137.202.10]:57519 "EHLO mail.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752770AbcAUTFy (ORCPT ); Thu, 21 Jan 2016 14:05:54 -0500 Subject: Re: [PATCH 2/5] x86/cpufeature: Remove static_cpu_has() To: Borislav Petkov References: <1453401286-26966-1-git-send-email-bp@alien8.de> <1453401286-26966-3-git-send-email-bp@alien8.de> Cc: Andy Lutomirski , Brian Gerst , X86 ML , LKML From: "H. Peter Anvin" Message-ID: <56A12BF6.6070508@zytor.com> Date: Thu, 21 Jan 2016 11:05:26 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: <1453401286-26966-3-git-send-email-bp@alien8.de> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/21/16 10:34, Borislav Petkov wrote: > From: Borislav Petkov > > Well, this one doesn't work properly before alternatives have run. And > it was supposed to provide an optimized JMP because the assumption was > that the offset it is jumping to is within a signed byte and thus a > two-byte JMP. > > So I did an x86_64 allyesconfig build and dumped all possible sites > where static_cpu_has() was used. The optimization amounted to all in all > 12(!) places where static_cpu_has() had generated a 2-byte JMP. Which > has saved us a whopping 36 bytes! > > This clearly is not worth the trouble so we can remove it. The only > place where the optimization might count - in __switch_to() - we will > handle differently. But that's not subject of this patch. > > diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h > index 3cce9f3c5cb1..2b0abb241205 100644 > --- a/arch/x86/include/asm/cpufeature.h > +++ b/arch/x86/include/asm/cpufeature.h > @@ -125,103 +125,20 @@ extern const char * const x86_bug_flags[NBUGINTS*32]; > #define cpu_has_osxsave boot_cpu_has(X86_FEATURE_OSXSAVE) > #define cpu_has_hypervisor boot_cpu_has(X86_FEATURE_HYPERVISOR) > /* > - * Do not add any more of those clumsy macros - use static_cpu_has_safe() for > + * Do not add any more of those clumsy macros - use static_cpu_has() for > * fast paths and boot_cpu_has() otherwise! > */ > > #if __GNUC__ >= 4 && defined(CONFIG_X86_FAST_FEATURE_TESTS) Just replace the __GNUC__ >= 4 with CC_HACE_ASM_GOTO in this test and get rid of the tests of CC_HAVE_ASM_GOTO in the rest of the code. > /* > * gcc 3.x is too stupid to do the static test; fall back to dynamic. > */ ... and modify this comment accordingly. -hpa