x86: Remove the default REP MOVSB threshold tunable value [BZ #27061]

Message ID CAMe9rOoe8m3KXs3CDyhXFZ1eEKBWFV+-v-=LnevR=ZNHoRjw9A@mail.gmail.com
State Committed
Headers
Series x86: Remove the default REP MOVSB threshold tunable value [BZ #27061] |

Commit Message

H.J. Lu Dec. 14, 2020, 3:14 p.m. UTC
  On Mon, Dec 14, 2020 at 6:59 AM Carlos O'Donell <carlos@redhat.com> wrote:
>
> On 12/13/20 9:51 AM, H.J. Lu via Libc-alpha wrote:
> > Since the default REP MOVSB threshold is 2048 * (vector size / 16),
> > remove its default tunable value so that the correct default value
> > will be set correctly by init_cacheinfo ().
>
> This is a failure in the tunables framework. We should have internal
> APIs to detect:
> * Set by user.
> * Still set to default.
> I've run into this before when we were looking at some of the other
> tunables for x86. Please file an enhancement request for this and
> then we can look at implementing this and adding back the defaults.

https://sourceware.org/bugzilla/show_bug.cgi?id=27069

> OK with the typo fix and upstream bug reference.

Fixed.

> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
>
> > ---
> >  sysdeps/x86/dl-tunables.list | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/sysdeps/x86/dl-tunables.list b/sysdeps/x86/dl-tunables.list
> > index 1a4a93a070..348616fb69 100644
> > --- a/sysdeps/x86/dl-tunables.list
> > +++ b/sysdeps/x86/dl-tunables.list
> > @@ -39,9 +39,10 @@ glibc {
> >        # REP MOVSB.  Since larger register size can move more data with a
> >        # single load and store, the threshold is higher with larger register
> >        # size.  Note: Since the REP MOVSB threshold must be greater than 8
> > -      # times of vector size, the minium value must be updated at run-time.
> > +      # times of vector size and the default value is 2048 * (vector size
> > +      # / 16), the default value and the minium value must be updated at
>
> s/minium/minimum/g
>
> Please add references to upstream bug.

Fixed.

> > +      # run-time.
> >        minval: 1
> > -      default: 2048
> >      }
> >      x86_rep_stosb_threshold {
> >        type: SIZE_T
> >
>
>
> --
> Cheers,
> Carlos.
>

Here is the patch I am checking in.

Thanks.
  

Patch

From 07f5e6c5e2f91854024c6294e436418c504fe66b Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Sun, 13 Dec 2020 04:56:41 -0800
Subject: [PATCH] x86: Remove the default REP MOVSB threshold tunable value [BZ
 #27061]

Since we can't tell if the tunable value is set by user or not:

https://sourceware.org/bugzilla/show_bug.cgi?id=27069

remove the default REP MOVSB threshold tunable value so that the correct
default value will be set correctly by init_cacheinfo ().

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
---
 sysdeps/x86/dl-tunables.list | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/sysdeps/x86/dl-tunables.list b/sysdeps/x86/dl-tunables.list
index 1a4a93a070..bc26e9fa01 100644
--- a/sysdeps/x86/dl-tunables.list
+++ b/sysdeps/x86/dl-tunables.list
@@ -39,9 +39,11 @@  glibc {
       # REP MOVSB.  Since larger register size can move more data with a
       # single load and store, the threshold is higher with larger register
       # size.  Note: Since the REP MOVSB threshold must be greater than 8
-      # times of vector size, the minium value must be updated at run-time.
+      # times of vector size and the default value is 2048 * (vector size
+      # / 16), the default value and the minimum value must be updated at
+      # run-time.  NB: Don't set the default value since we can't tell if
+      # the tunable value is set by user or not [BZ #27069].
       minval: 1
-      default: 2048
     }
     x86_rep_stosb_threshold {
       type: SIZE_T
-- 
2.29.2