[v1] x86: Fix incorrect scope of setting `shared_per_thread`

Message ID 20230811003109.3046769-1-goldstein.w.n@gmail.com
State Superseded
Headers
Series [v1] x86: Fix incorrect scope of setting `shared_per_thread` |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent
linaro-tcwg-bot/tcwg_glibc_check--master-aarch64 success Testing passed
redhat-pt-bot/TryBot-32bit success Build for i686
linaro-tcwg-bot/tcwg_glibc_check--master-arm success Testing passed
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_glibc_build--master-arm success Testing passed

Commit Message

Noah Goldstein Aug. 11, 2023, 12:31 a.m. UTC
  The:

```
    if (shared_per_thread > 0 && threads > 0)
      shared_per_thread /= threads;
```

Code was accidentally moved to inside the else scope.  This doesn't
match how it was previously (before af992e7abd).

This patch fixes that by putting the division after the `else` block.
---
 sysdeps/x86/dl-cacheinfo.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
  

Comments

H.J. Lu Aug. 11, 2023, 1:37 a.m. UTC | #1
On Thu, Aug 10, 2023 at 5:31 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>
> The:
>
> ```
>     if (shared_per_thread > 0 && threads > 0)
>       shared_per_thread /= threads;
> ```
>
> Code was accidentally moved to inside the else scope.  This doesn't
> match how it was previously (before af992e7abd).
>
> This patch fixes that by putting the division after the `else` block.

Since it is a regression, we should open a bug and backport this
fix.

> ---
>  sysdeps/x86/dl-cacheinfo.h | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
> index 285773039f..88316a7818 100644
> --- a/sysdeps/x86/dl-cacheinfo.h
> +++ b/sysdeps/x86/dl-cacheinfo.h
> @@ -770,11 +770,10 @@ get_common_cache_info (long int *shared_ptr, long int * shared_per_thread_ptr, u
>              level.  */
>           threads = ((cpu_features->features[CPUID_INDEX_1].cpuid.ebx >> 16)
>                      & 0xff);
> -
> +        }
>           /* Get per-thread size of highest level cache.  */
>           if (shared_per_thread > 0 && threads > 0)
>             shared_per_thread /= threads;
> -       }
>      }
>
>    /* Account for non-inclusive L2 and L3 caches.  */
> --
> 2.34.1
>
  
Noah Goldstein Aug. 11, 2023, 2:51 a.m. UTC | #2
On Thu, Aug 10, 2023 at 8:38 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Thu, Aug 10, 2023 at 5:31 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
> >
> > The:
> >
> > ```
> >     if (shared_per_thread > 0 && threads > 0)
> >       shared_per_thread /= threads;
> > ```
> >
> > Code was accidentally moved to inside the else scope.  This doesn't
> > match how it was previously (before af992e7abd).
> >
> > This patch fixes that by putting the division after the `else` block.
>
> Since it is a regression, we should open a bug and backport this
> fix.

Done: See https://sourceware.org/bugzilla/show_bug.cgi?id=30745
FYI: I changed title to include BZ number so doesn't reply in chain.
>
> > ---
> >  sysdeps/x86/dl-cacheinfo.h | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
> > index 285773039f..88316a7818 100644
> > --- a/sysdeps/x86/dl-cacheinfo.h
> > +++ b/sysdeps/x86/dl-cacheinfo.h
> > @@ -770,11 +770,10 @@ get_common_cache_info (long int *shared_ptr, long int * shared_per_thread_ptr, u
> >              level.  */
> >           threads = ((cpu_features->features[CPUID_INDEX_1].cpuid.ebx >> 16)
> >                      & 0xff);
> > -
> > +        }
> >           /* Get per-thread size of highest level cache.  */
> >           if (shared_per_thread > 0 && threads > 0)
> >             shared_per_thread /= threads;
> > -       }
> >      }
> >
> >    /* Account for non-inclusive L2 and L3 caches.  */
> > --
> > 2.34.1
> >
>
>
> --
> H.J.
  

Patch

diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
index 285773039f..88316a7818 100644
--- a/sysdeps/x86/dl-cacheinfo.h
+++ b/sysdeps/x86/dl-cacheinfo.h
@@ -770,11 +770,10 @@  get_common_cache_info (long int *shared_ptr, long int * shared_per_thread_ptr, u
 	     level.  */
 	  threads = ((cpu_features->features[CPUID_INDEX_1].cpuid.ebx >> 16)
 		     & 0xff);
-
+        }
 	  /* Get per-thread size of highest level cache.  */
 	  if (shared_per_thread > 0 && threads > 0)
 	    shared_per_thread /= threads;
-	}
     }
 
   /* Account for non-inclusive L2 and L3 caches.  */