00db10
commit c3d8dc45c9df199b8334599a6cbd98c9950dba62
00db10
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
00db10
Date:   Thu Oct 11 15:18:40 2018 -0300
00db10
00db10
    x86: Fix Haswell strong flags (BZ#23709)
00db10
    
00db10
    Th commit 'Disable TSX on some Haswell processors.' (2702856bf4) changed the
00db10
    default flags for Haswell models.  Previously, new models were handled by the
00db10
    default switch path, which assumed a Core i3/i5/i7 if AVX is available. After
00db10
    the patch, Haswell models (0x3f, 0x3c, 0x45, 0x46) do not set the flags
00db10
    Fast_Rep_String, Fast_Unaligned_Load, Fast_Unaligned_Copy, and
00db10
    Prefer_PMINUB_for_stringop (only the TSX one).
00db10
    
00db10
    This patch fixes it by disentangle the TSX flag handling from the memory
00db10
    optimization ones.  The strstr case cited on patch now selects the
00db10
    __strstr_sse2_unaligned as expected for the Haswell cpu.
00db10
    
00db10
    Checked on x86_64-linux-gnu.
00db10
    
00db10
            [BZ #23709]
00db10
            * sysdeps/x86/cpu-features.c (init_cpu_features): Set TSX bits
00db10
            independently of other flags.
00db10
00db10
diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
00db10
index 0667e486959a8a91..d134ef3a92cbc83d 100644
00db10
--- a/sysdeps/x86/cpu-features.c
00db10
+++ b/sysdeps/x86/cpu-features.c
00db10
@@ -133,7 +133,13 @@ init_cpu_features (struct cpu_features *cpu_features)
00db10
 		    | bit_Fast_Unaligned_Load
00db10
 		    | bit_Prefer_PMINUB_for_stringop);
00db10
 	      break;
00db10
+	    }
00db10
 
00db10
+	 /* Disable TSX on some Haswell processors to avoid TSX on kernels that
00db10
+	    weren't updated with the latest microcode package (which disables
00db10
+	    broken feature by default).  */
00db10
+	 switch (model)
00db10
+	    {
00db10
 	    case 0x3f:
00db10
 	      /* Xeon E7 v3 with stepping >= 4 has working TSX.  */
00db10
 	      if (stepping >= 4)