This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Rename the glibc.tune namespace to glibc.cpu


On 07/16/2018 10:16 AM, Siddhesh Poyarekar wrote:
> The glibc.tune namespace is vaguely named since it is a 'tunable', so
> give it a more specific name that describes what it refers to.  Rename
> the tunable namespace to 'cpu' to more accurately reflect what it
> encompasses.  Also rename glibc.tune.cpu to glibc.cpu.name since
> glibc.cpu.cpu is weird.
> 
> 	* NEWS: Mention the change.
> 	* elf/dl-tunables.list: Rename tune namespace to cpu.
> 	* sysdeps/powerpc/dl-tunables.list: Likewise.
> 	* sysdeps/x86/dl-tunables.list: Likewise.
> 	* sysdeps/aarch64/dl-tunables.list: Rename tune.cpu to
> 	cpu.name.
> 	* elf/dl-hwcaps.c (_dl_important_hwcaps): Adjust.
> 	* elf/dl-hwcaps.h (GET_HWCAP_MASK): Likewise.
> 	* manual/README.tunables: Likewise.
> 	* manual/tunables.texi: Likewise.
> 	* sysdeps/powerpc/cpu-features.c: Likewise.
> 	* sysdeps/unix/sysv/linux/aarch64/cpu-features.c
> 	(init_cpu_features): Likewise.
> 	* sysdeps/x86/cpu-features.c: Likewise.
> 	* sysdeps/x86/cpu-features.h: Likewise.
> 	* sysdeps/x86/cpu-tunables.c: Likewise.
> 	* sysdeps/x86_64/Makefile: Likewise.

This looks good to me. I'd like this to wait until 2.29 opens. I want to
minimize spurious changes. It would also be nice in 2.29 to rename the
options to arch_* prefixed options for those that are arch-specific.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> ---
>  NEWS                                          |  3 ++
>  elf/dl-hwcaps.c                               |  2 +-
>  elf/dl-hwcaps.h                               |  2 +-
>  elf/dl-tunables.list                          |  2 +-
>  manual/README.tunables                        |  6 ++--
>  manual/tunables.texi                          | 30 +++++++++----------
>  sysdeps/aarch64/dl-tunables.list              |  4 +--
>  sysdeps/powerpc/cpu-features.c                |  2 +-
>  sysdeps/powerpc/dl-tunables.list              |  2 +-
>  .../unix/sysv/linux/aarch64/cpu-features.c    |  2 +-
>  sysdeps/x86/cpu-features.c                    |  4 +--
>  sysdeps/x86/cpu-features.h                    |  2 +-
>  sysdeps/x86/cpu-tunables.c                    |  4 +--
>  sysdeps/x86/dl-tunables.list                  |  2 +-
>  sysdeps/x86_64/Makefile                       |  4 +--
>  15 files changed, 37 insertions(+), 34 deletions(-)
> 
> diff --git a/NEWS b/NEWS
> index 5de2c2816f..b5308fd596 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -173,6 +173,9 @@ Deprecated and removed features, and other changes affecting compatibility:
>    project's versions of these files.  The plan is to make this the default
>    behavior in a future release.
>  
> +* The glibc.tune tunable namespace has been renamed to glibc.cpu and the
> +  tunable glibc.tune.cpu has been renamed to glibc.cpu.name.
> +
>  Changes to build and runtime requirements:
>  
>    GNU make 4.0 or later is now required to build glibc.
> diff --git a/elf/dl-hwcaps.c b/elf/dl-hwcaps.c
> index 23482a88a1..ecf00b4577 100644
> --- a/elf/dl-hwcaps.c
> +++ b/elf/dl-hwcaps.c
> @@ -140,7 +140,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
>  	 string and bit like you can ignore an OS-supplied HWCAP bit.  */
>        hwcap_mask |= (uint64_t) mask << _DL_FIRST_EXTRA;
>  #if HAVE_TUNABLES
> -      TUNABLE_SET (glibc, tune, hwcap_mask, uint64_t, hwcap_mask);
> +      TUNABLE_SET (glibc, cpu, hwcap_mask, uint64_t, hwcap_mask);
>  #else
>        GLRO(dl_hwcap_mask) = hwcap_mask;
>  #endif
> diff --git a/elf/dl-hwcaps.h b/elf/dl-hwcaps.h
> index 17f0da4c73..d69ee11dc2 100644
> --- a/elf/dl-hwcaps.h
> +++ b/elf/dl-hwcaps.h
> @@ -19,7 +19,7 @@
>  #include <elf/dl-tunables.h>
>  
>  #if HAVE_TUNABLES
> -# define GET_HWCAP_MASK() TUNABLE_GET (glibc, tune, hwcap_mask, uint64_t, NULL)
> +# define GET_HWCAP_MASK() TUNABLE_GET (glibc, cpu, hwcap_mask, uint64_t, NULL)
>  #else
>  # ifdef SHARED
>  #   define GET_HWCAP_MASK() GLRO(dl_hwcap_mask)
> diff --git a/elf/dl-tunables.list b/elf/dl-tunables.list
> index 1f8ecb8437..b108592b62 100644
> --- a/elf/dl-tunables.list
> +++ b/elf/dl-tunables.list
> @@ -86,7 +86,7 @@ glibc {
>        type: SIZE_T
>      }
>    }
> -  tune {
> +  cpu {
>      hwcap_mask {
>        type: UINT_64
>        env_alias: LD_HWCAP_MASK
> diff --git a/manual/README.tunables b/manual/README.tunables
> index 3967679f43..f87a31a65e 100644
> --- a/manual/README.tunables
> +++ b/manual/README.tunables
> @@ -105,11 +105,11 @@ where 'check' is the tunable name, 'int32_t' is the C type of the tunable and
>  To get and set tunables in a different namespace from that module, use the full
>  form of the macros as follows:
>  
> -  val = TUNABLE_GET_FULL (glibc, tune, hwcap_mask, uint64_t, NULL)
> +  val = TUNABLE_GET_FULL (glibc, cpu, hwcap_mask, uint64_t, NULL)
>  
> -  TUNABLE_SET_FULL (glibc, tune, hwcap_mask, uint64_t, val)
> +  TUNABLE_SET_FULL (glibc, cpu, hwcap_mask, uint64_t, val)
>  
> -where 'glibc' is the top namespace, 'tune' is the tunable namespace and the
> +where 'glibc' is the top namespace, 'cpu' is the tunable namespace and the
>  remaining arguments are the same as the short form macros.
>  
>  When TUNABLE_NAMESPACE is not defined in a module, TUNABLE_GET is equivalent to
> diff --git a/manual/tunables.texi b/manual/tunables.texi
> index be33c9fc79..9b8f9e4610 100644
> --- a/manual/tunables.texi
> +++ b/manual/tunables.texi
> @@ -295,23 +295,23 @@ The default value of this tunable is @samp{3}.
>  @cindex non_temporal_threshold tunables
>  @cindex tunables, non_temporal_threshold
>  
> -@deftp {Tunable namespace} glibc.tune
> +@deftp {Tunable namespace} glibc.cpu
>  Behavior of @theglibc{} can be tuned to assume specific hardware capabilities
>  by setting the following tunables in the @code{tune} namespace:
>  @end deftp
>  
> -@deftp Tunable glibc.tune.hwcap_mask
> +@deftp Tunable glibc.cpu.hwcap_mask
>  This tunable supersedes the @env{LD_HWCAP_MASK} environment variable and is
>  identical in features.
>  
>  The @code{AT_HWCAP} key in the Auxiliary Vector specifies instruction set
>  extensions available in the processor at runtime for some architectures.  The
> -@code{glibc.tune.hwcap_mask} tunable allows the user to mask out those
> +@code{glibc.cpu.hwcap_mask} tunable allows the user to mask out those
>  capabilities at runtime, thus disabling use of those extensions.
>  @end deftp
>  
> -@deftp Tunable glibc.tune.hwcaps
> -The @code{glibc.tune.hwcaps=-xxx,yyy,-zzz...} tunable allows the user to
> +@deftp Tunable glibc.cpu.hwcaps
> +The @code{glibc.cpu.hwcaps=-xxx,yyy,-zzz...} tunable allows the user to
>  enable CPU/ARCH feature @code{yyy}, disable CPU/ARCH feature @code{xxx}
>  and @code{zzz} where the feature name is case-sensitive and has to match
>  the ones in @code{sysdeps/x86/cpu-features.h}.
> @@ -319,8 +319,8 @@ the ones in @code{sysdeps/x86/cpu-features.h}.
>  This tunable is specific to i386 and x86-64.
>  @end deftp
>  
> -@deftp Tunable glibc.tune.cached_memopt
> -The @code{glibc.tune.cached_memopt=[0|1]} tunable allows the user to
> +@deftp Tunable glibc.cpu.cached_memopt
> +The @code{glibc.cpu.cached_memopt=[0|1]} tunable allows the user to
>  enable optimizations recommended for cacheable memory.  If set to
>  @code{1}, @theglibc{} assumes that the process memory image consists
>  of cacheable (non-device) memory only.  The default, @code{0},
> @@ -329,8 +329,8 @@ indicates that the process may use device memory.
>  This tunable is specific to powerpc, powerpc64 and powerpc64le.
>  @end deftp
>  
> -@deftp Tunable glibc.tune.cpu
> -The @code{glibc.tune.cpu=xxx} tunable allows the user to tell @theglibc{} to
> +@deftp Tunable glibc.cpu.cpu
> +The @code{glibc.cpu.cpu=xxx} tunable allows the user to tell @theglibc{} to
>  assume that the CPU is @code{xxx} where xxx may have one of these values:
>  @code{generic}, @code{falkor}, @code{thunderxt88}, @code{thunderx2t99},
>  @code{thunderx2t99p1}.
> @@ -338,20 +338,20 @@ assume that the CPU is @code{xxx} where xxx may have one of these values:
>  This tunable is specific to aarch64.
>  @end deftp
>  
> -@deftp Tunable glibc.tune.x86_data_cache_size
> -The @code{glibc.tune.x86_data_cache_size} tunable allows the user to set
> +@deftp Tunable glibc.cpu.x86_data_cache_size
> +The @code{glibc.cpu.x86_data_cache_size} tunable allows the user to set
>  data cache size in bytes for use in memory and string routines.
>  
>  This tunable is specific to i386 and x86-64.
>  @end deftp
>  
> -@deftp Tunable glibc.tune.x86_shared_cache_size
> -The @code{glibc.tune.x86_shared_cache_size} tunable allows the user to
> +@deftp Tunable glibc.cpu.x86_shared_cache_size
> +The @code{glibc.cpu.x86_shared_cache_size} tunable allows the user to
>  set shared cache size in bytes for use in memory and string routines.
>  @end deftp
>  
> -@deftp Tunable glibc.tune.x86_non_temporal_threshold
> -The @code{glibc.tune.x86_non_temporal_threshold} tunable allows the user
> +@deftp Tunable glibc.cpu.x86_non_temporal_threshold
> +The @code{glibc.cpu.x86_non_temporal_threshold} tunable allows the user
>  to set threshold in bytes for non temporal store.
>  
>  This tunable is specific to i386 and x86-64.
> diff --git a/sysdeps/aarch64/dl-tunables.list b/sysdeps/aarch64/dl-tunables.list
> index f6a88168cc..cfcf940ebd 100644
> --- a/sysdeps/aarch64/dl-tunables.list
> +++ b/sysdeps/aarch64/dl-tunables.list
> @@ -17,8 +17,8 @@
>  # <http://www.gnu.org/licenses/>.
>  
>  glibc {
> -  tune {
> -    cpu {
> +  cpu {
> +    name {
>        type: STRING
>      }
>    }
> diff --git a/sysdeps/powerpc/cpu-features.c b/sysdeps/powerpc/cpu-features.c
> index 955d4778a6..ad809b9815 100644
> --- a/sysdeps/powerpc/cpu-features.c
> +++ b/sysdeps/powerpc/cpu-features.c
> @@ -30,7 +30,7 @@ init_cpu_features (struct cpu_features *cpu_features)
>       tunables is enable, since for this case user can explicit disable
>       unaligned optimizations.  */
>  #if HAVE_TUNABLES
> -  int32_t cached_memfunc = TUNABLE_GET (glibc, tune, cached_memopt, int32_t,
> +  int32_t cached_memfunc = TUNABLE_GET (glibc, cpu, cached_memopt, int32_t,
>  					NULL);
>    cpu_features->use_cached_memopt = (cached_memfunc > 0);
>  #else
> diff --git a/sysdeps/powerpc/dl-tunables.list b/sysdeps/powerpc/dl-tunables.list
> index d26636a16b..b3372555f7 100644
> --- a/sysdeps/powerpc/dl-tunables.list
> +++ b/sysdeps/powerpc/dl-tunables.list
> @@ -17,7 +17,7 @@
>  # <http://www.gnu.org/licenses/>.
>  
>  glibc {
> -  tune {
> +  cpu {
>      cached_memopt {
>        type: INT_32
>        minval: 0
> diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
> index 39eba0186f..b4f348509e 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
> +++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
> @@ -57,7 +57,7 @@ init_cpu_features (struct cpu_features *cpu_features)
>  
>  #if HAVE_TUNABLES
>    /* Get the tunable override.  */
> -  const char *mcpu = TUNABLE_GET (glibc, tune, cpu, const char *, NULL);
> +  const char *mcpu = TUNABLE_GET (glibc, cpu, name, const char *, NULL);
>    if (mcpu != NULL)
>      midr = get_midr_from_mcpu (mcpu);
>  #endif
> diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
> index d41ebde823..b8bef8d54b 100644
> --- a/sysdeps/x86/cpu-features.c
> +++ b/sysdeps/x86/cpu-features.c
> @@ -22,7 +22,7 @@
>  #include <libc-pointer-arith.h>
>  
>  #if HAVE_TUNABLES
> -# define TUNABLE_NAMESPACE tune
> +# define TUNABLE_NAMESPACE cpu
>  # include <unistd.h>		/* Get STDOUT_FILENO for _dl_printf.  */
>  # include <elf/dl-tunables.h>
>  
> @@ -398,7 +398,7 @@ no_cpuid:
>  
>    /* Reuse dl_platform, dl_hwcap and dl_hwcap_mask for x86.  */
>  #if !HAVE_TUNABLES && defined SHARED
> -  /* The glibc.tune.hwcap_mask tunable is initialized already, so no need to do
> +  /* The glibc.cpu.hwcap_mask tunable is initialized already, so no need to do
>       this.  */
>    GLRO(dl_hwcap_mask) = HWCAP_IMPORTANT;
>  #endif
> diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h
> index 624e681e96..e9713f6215 100644
> --- a/sysdeps/x86/cpu-features.h
> +++ b/sysdeps/x86/cpu-features.h
> @@ -141,7 +141,7 @@ struct cpu_features
>    unsigned long int xsave_state_size;
>    /* The full state size for XSAVE when XSAVEC is disabled by
>  
> -     GLIBC_TUNABLES=glibc.tune.hwcaps=-XSAVEC_Usable
> +     GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVEC_Usable
>     */
>    unsigned int xsave_state_full_size;
>    unsigned int feature[FEATURE_INDEX_MAX];
> diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c
> index af761dcbbc..c38af71b8a 100644
> --- a/sysdeps/x86/cpu-tunables.c
> +++ b/sysdeps/x86/cpu-tunables.c
> @@ -17,7 +17,7 @@
>     <http://www.gnu.org/licenses/>.  */
>  
>  #if HAVE_TUNABLES
> -# define TUNABLE_NAMESPACE tune
> +# define TUNABLE_NAMESPACE cpu
>  # include <stdbool.h>
>  # include <stdint.h>
>  # include <unistd.h>		/* Get STDOUT_FILENO for _dl_printf.  */
> @@ -116,7 +116,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
>       the hardware which wasn't available when the selection was made.
>       The environment variable:
>  
> -     GLIBC_TUNABLES=glibc.tune.hwcaps=-xxx,yyy,-zzz,....
> +     GLIBC_TUNABLES=glibc.cpu.hwcaps=-xxx,yyy,-zzz,....
>  
>       can be used to enable CPU/ARCH feature yyy, disable CPU/ARCH feature
>       yyy and zzz, where the feature name is case-sensitive and has to
> diff --git a/sysdeps/x86/dl-tunables.list b/sysdeps/x86/dl-tunables.list
> index 7c3236a68f..9a5a0b1a63 100644
> --- a/sysdeps/x86/dl-tunables.list
> +++ b/sysdeps/x86/dl-tunables.list
> @@ -17,7 +17,7 @@
>  # <http://www.gnu.org/licenses/>.
>  
>  glibc {
> -  tune {
> +  cpu {
>      hwcaps {
>        type: STRING
>      }
> diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile
> index 9f1562f1b2..d51cf03ac9 100644
> --- a/sysdeps/x86_64/Makefile
> +++ b/sysdeps/x86_64/Makefile
> @@ -57,7 +57,7 @@ modules-names += x86_64/tst-x86_64mod-1
>  LDFLAGS-tst-x86_64mod-1.so = -Wl,-soname,tst-x86_64mod-1.so
>  ifneq (no,$(have-tunables))
>  # Test the state size for XSAVE when XSAVEC is disabled.
> -tst-x86_64-1-ENV = GLIBC_TUNABLES=glibc.tune.hwcaps=-XSAVEC_Usable
> +tst-x86_64-1-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVEC_Usable
>  endif
>  
>  $(objpfx)tst-x86_64-1: $(objpfx)x86_64/tst-x86_64mod-1.so
> @@ -74,7 +74,7 @@ $(objpfx)tst-platform-1.out: $(objpfx)x86_64/tst-platformmod-2.so
>  # Turn off AVX512F_Usable and AVX2_Usable so that GLRO(dl_platform) is
>  # always set to x86_64.
>  tst-platform-1-ENV = LD_PRELOAD=$(objpfx)\$$PLATFORM/tst-platformmod-2.so \
> -	GLIBC_TUNABLES=glibc.tune.hwcaps=-AVX512F_Usable,-AVX2_Usable
> +	GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX512F_Usable,-AVX2_Usable
>  endif
>  
>  tests += tst-audit3 tst-audit4 tst-audit5 tst-audit6 tst-audit7 \
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]