[glibc] x86: Increase allowable TSX abort rate to 6%.

Carlos O'Donell carlos@sourceware.org
Fri Nov 14 13:20:00 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5bdf3c909274a4796b848d7595a025dca1951570

commit 5bdf3c909274a4796b848d7595a025dca1951570
Author: Carlos O'Donell <carlos@redhat.com>
Date:   Mon Nov 10 15:17:45 2025 -0500

    x86: Increase allowable TSX abort rate to 6%.
    
    In pre-commit CI on an E5-2698 v4 we sometimes see ~5% aborts.
    
    Set the trip point to 6%.
    
    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>

Diff:
---
 sysdeps/x86/tst-string-rtm.h | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/sysdeps/x86/tst-string-rtm.h b/sysdeps/x86/tst-string-rtm.h
index 1bf863063f..699c52227b 100644
--- a/sysdeps/x86/tst-string-rtm.h
+++ b/sysdeps/x86/tst-string-rtm.h
@@ -36,6 +36,18 @@ do_test_1 (const char *name, unsigned int loop, int (*prepare) (void),
   unsigned int i;
   unsigned int naborts = 0;
   unsigned int failed = 0;
+
+  /* Iterate LOOP number of times, calling the same function over
+     and over again in an attempt to detect the following failure
+     modes:
+
+     1. Aborting instruction on the hot path.
+     2. Number of instructions executed exceeds maximum.
+     3. Memory reads or writes exceed maximum.
+
+     The function getting bigger may increase the abort rate due
+     to external events, despite not triggering #2 above, and may
+     need adjusting the abort rate failure test below.  */
   for (i = 0; i < loop; i++)
     {
       failed |= function ();
@@ -56,10 +68,12 @@ do_test_1 (const char *name, unsigned int loop, int (*prepare) (void),
 
   if (naborts)
     {
-      /* NB: Low single digit (<= 5%) noise-level aborts are normal for
-	 TSX.  */
+      /* Low single digit (<= 5%) noise-level aborts are normal for TSX
+	 for reasons that are outside of the library's control.
+	 In pre-commit CI on an E5-2698 v4 we sometimes see ~5% aborts.
+	 Set the trip point to 6%.  */
       double rate = 100 * ((double) naborts) / ((double) loop);
-      if (rate > 5)
+      if (rate > 6)
 	FAIL_EXIT1 ("TSX abort rate: %.2f%% (%d out of %d)",
 		    rate, naborts, loop);
     }


More information about the Glibc-cvs mailing list