On 01/21/16 10:34, Borislav Petkov wrote:
> From: Borislav Petkov <b...@suse.de>
> 
> 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

Reply via email to