* [PATCH] x86: Properly match CPU feature [BZ #27222] @ 2021-01-21 19:47 H.J. Lu via Libc-alpha 2021-01-22 15:01 ` H.J. Lu via Libc-alpha 0 siblings, 1 reply; 8+ messages in thread From: H.J. Lu via Libc-alpha @ 2021-01-21 19:47 UTC (permalink / raw) To: libc-alpha /proc/cpuinfo has flags : fpu vme de pse ... ssse3 ... SSE3 in /proc/cpuinfo is displaced as "pni". Search "pni" instead of "sse3" for SSE3. After finding a match for a string, verify the previous character is space and the next character is space or null byte to avoid matching "XXXYYYXXX" with "YYY". --- sysdeps/x86/tst-cpu-features-cpuinfo.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c index 771771c959..9308349869 100644 --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c @@ -64,7 +64,12 @@ check_proc (const char *proc_name, int flag, int usable, const char *name) return 0; } printf (" %s: %d\n", name, flag); - if (strstr (cpu_flags, proc_name) != NULL) + char *str = strstr (cpu_flags, proc_name); + size_t len = strlen (proc_name); + /* Don't match "ssse3" with "sse3". */ + if (str != NULL + && str[-1] == ' ' + && (str[len] == ' ' || str[len] == '\0')) found = 1; printf (" cpuinfo (%s): %d\n", proc_name, found); @@ -206,7 +211,7 @@ do_test (int argc, char **argv) fails += CHECK_PROC (ssbd, SSBD); fails += CHECK_PROC (sse, SSE); fails += CHECK_PROC (sse2, SSE2); - fails += CHECK_PROC (sse3, SSE3); + fails += CHECK_PROC (pni, SSE3); fails += CHECK_PROC (sse4_1, SSE4_1); fails += CHECK_PROC (sse4_2, SSE4_2); fails += CHECK_PROC (sse4a, SSE4A); -- 2.29.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] x86: Properly match CPU feature [BZ #27222] 2021-01-21 19:47 [PATCH] x86: Properly match CPU feature [BZ #27222] H.J. Lu via Libc-alpha @ 2021-01-22 15:01 ` H.J. Lu via Libc-alpha 2021-01-22 16:56 ` Adhemerval Zanella via Libc-alpha 0 siblings, 1 reply; 8+ messages in thread From: H.J. Lu via Libc-alpha @ 2021-01-22 15:01 UTC (permalink / raw) To: GNU C Library On Thu, Jan 21, 2021 at 11:47 AM H.J. Lu <hjl.tools@gmail.com> wrote: > > /proc/cpuinfo has > > flags : fpu vme de pse ... ssse3 ... > > SSE3 in /proc/cpuinfo is displaced as "pni". Search "pni" instead of > "sse3" for SSE3. After finding a match for a string, verify the previous > character is space and the next character is space or null byte to avoid > matching "XXXYYYXXX" with "YYY". > --- > sysdeps/x86/tst-cpu-features-cpuinfo.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c > index 771771c959..9308349869 100644 > --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c > +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c > @@ -64,7 +64,12 @@ check_proc (const char *proc_name, int flag, int usable, const char *name) > return 0; > } > printf (" %s: %d\n", name, flag); > - if (strstr (cpu_flags, proc_name) != NULL) > + char *str = strstr (cpu_flags, proc_name); > + size_t len = strlen (proc_name); > + /* Don't match "ssse3" with "sse3". */ > + if (str != NULL > + && str[-1] == ' ' > + && (str[len] == ' ' || str[len] == '\0')) > found = 1; > printf (" cpuinfo (%s): %d\n", proc_name, found); > > @@ -206,7 +211,7 @@ do_test (int argc, char **argv) > fails += CHECK_PROC (ssbd, SSBD); > fails += CHECK_PROC (sse, SSE); > fails += CHECK_PROC (sse2, SSE2); > - fails += CHECK_PROC (sse3, SSE3); > + fails += CHECK_PROC (pni, SSE3); > fails += CHECK_PROC (sse4_1, SSE4_1); > fails += CHECK_PROC (sse4_2, SSE4_2); > fails += CHECK_PROC (sse4a, SSE4A); > -- > 2.29.2 > I am checking it in. -- H.J. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] x86: Properly match CPU feature [BZ #27222] 2021-01-22 15:01 ` H.J. Lu via Libc-alpha @ 2021-01-22 16:56 ` Adhemerval Zanella via Libc-alpha 2021-01-22 18:11 ` H.J. Lu via Libc-alpha 0 siblings, 1 reply; 8+ messages in thread From: Adhemerval Zanella via Libc-alpha @ 2021-01-22 16:56 UTC (permalink / raw) To: libc-alpha On 22/01/2021 12:01, H.J. Lu via Libc-alpha wrote: > On Thu, Jan 21, 2021 at 11:47 AM H.J. Lu <hjl.tools@gmail.com> wrote: >> >> /proc/cpuinfo has >> >> flags : fpu vme de pse ... ssse3 ... >> >> SSE3 in /proc/cpuinfo is displaced as "pni". Search "pni" instead of >> "sse3" for SSE3. After finding a match for a string, verify the previous >> character is space and the next character is space or null byte to avoid >> matching "XXXYYYXXX" with "YYY". >> --- >> sysdeps/x86/tst-cpu-features-cpuinfo.c | 9 +++++++-- >> 1 file changed, 7 insertions(+), 2 deletions(-) >> >> diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c >> index 771771c959..9308349869 100644 >> --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c >> +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c >> @@ -64,7 +64,12 @@ check_proc (const char *proc_name, int flag, int usable, const char *name) >> return 0; >> } >> printf (" %s: %d\n", name, flag); >> - if (strstr (cpu_flags, proc_name) != NULL) >> + char *str = strstr (cpu_flags, proc_name); >> + size_t len = strlen (proc_name); >> + /* Don't match "ssse3" with "sse3". */ >> + if (str != NULL >> + && str[-1] == ' ' >> + && (str[len] == ' ' || str[len] == '\0')) >> found = 1; >> printf (" cpuinfo (%s): %d\n", proc_name, found); >> >> @@ -206,7 +211,7 @@ do_test (int argc, char **argv) >> fails += CHECK_PROC (ssbd, SSBD); >> fails += CHECK_PROC (sse, SSE); >> fails += CHECK_PROC (sse2, SSE2); >> - fails += CHECK_PROC (sse3, SSE3); >> + fails += CHECK_PROC (pni, SSE3); >> fails += CHECK_PROC (sse4_1, SSE4_1); >> fails += CHECK_PROC (sse4_2, SSE4_2); >> fails += CHECK_PROC (sse4a, SSE4A); >> -- >> 2.29.2 >> > > I am checking it in. > Ok for 2.33. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] x86: Properly match CPU feature [BZ #27222] 2021-01-22 16:56 ` Adhemerval Zanella via Libc-alpha @ 2021-01-22 18:11 ` H.J. Lu via Libc-alpha 2021-02-02 11:07 ` Andreas Schwab 0 siblings, 1 reply; 8+ messages in thread From: H.J. Lu via Libc-alpha @ 2021-01-22 18:11 UTC (permalink / raw) To: Adhemerval Zanella; +Cc: GNU C Library [-- Attachment #1: Type: text/plain, Size: 2047 bytes --] On Fri, Jan 22, 2021 at 8:56 AM Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> wrote: > > > > On 22/01/2021 12:01, H.J. Lu via Libc-alpha wrote: > > On Thu, Jan 21, 2021 at 11:47 AM H.J. Lu <hjl.tools@gmail.com> wrote: > >> > >> /proc/cpuinfo has > >> > >> flags : fpu vme de pse ... ssse3 ... > >> > >> SSE3 in /proc/cpuinfo is displaced as "pni". Search "pni" instead of > >> "sse3" for SSE3. After finding a match for a string, verify the previous > >> character is space and the next character is space or null byte to avoid > >> matching "XXXYYYXXX" with "YYY". > >> --- > >> sysdeps/x86/tst-cpu-features-cpuinfo.c | 9 +++++++-- > >> 1 file changed, 7 insertions(+), 2 deletions(-) > >> > >> diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c > >> index 771771c959..9308349869 100644 > >> --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c > >> +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c > >> @@ -64,7 +64,12 @@ check_proc (const char *proc_name, int flag, int usable, const char *name) > >> return 0; > >> } > >> printf (" %s: %d\n", name, flag); > >> - if (strstr (cpu_flags, proc_name) != NULL) > >> + char *str = strstr (cpu_flags, proc_name); > >> + size_t len = strlen (proc_name); > >> + /* Don't match "ssse3" with "sse3". */ > >> + if (str != NULL > >> + && str[-1] == ' ' > >> + && (str[len] == ' ' || str[len] == '\0')) > >> found = 1; > >> printf (" cpuinfo (%s): %d\n", proc_name, found); > >> > >> @@ -206,7 +211,7 @@ do_test (int argc, char **argv) > >> fails += CHECK_PROC (ssbd, SSBD); > >> fails += CHECK_PROC (sse, SSE); > >> fails += CHECK_PROC (sse2, SSE2); > >> - fails += CHECK_PROC (sse3, SSE3); > >> + fails += CHECK_PROC (pni, SSE3); > >> fails += CHECK_PROC (sse4_1, SSE4_1); > >> fails += CHECK_PROC (sse4_2, SSE4_2); > >> fails += CHECK_PROC (sse4a, SSE4A); > >> -- > >> 2.29.2 > >> > > > > I am checking it in. > > > > Ok for 2.33. I am checking in this different variant. -- H.J. [-- Attachment #2: 0001-x86-Properly-match-CPU-features-in-proc-cpuinfo-BZ-2.patch --] [-- Type: text/x-patch, Size: 4140 bytes --] From 27932428e116d9ca9d949305d880c9218479afa0 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <hjl.tools@gmail.com> Date: Thu, 21 Jan 2021 11:12:30 -0800 Subject: [PATCH] x86: Properly match CPU features in /proc/cpuinfo [BZ #27222] Search " YYY " and " YYY\n", instead of "YYY", to avoid matching "XXXYYYZZZ" with "YYY". Update /proc/cpuinfo CPU feature names: /proc/cpuinfo glibc ------------------------------------------------ avx512vbmi AVX512_VBMI dts DS pni SSE3 tsc_deadline_timer TSC_DEADLINE --- sysdeps/x86/tst-cpu-features-cpuinfo.c | 43 ++++++++++++++++++-------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c index 771771c959..f38a0f6af6 100644 --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c @@ -53,30 +53,47 @@ get_cpuinfo (void) } int -check_proc (const char *proc_name, int flag, int usable, const char *name) +check_proc (const char *proc_name, const char *search_name, int flag, + int usable, const char *name) { int found = 0; printf ("Checking %s:\n", name); - if (!usable) + printf (" %s: %d\n", name, flag); + char *str = strstr (cpu_flags, search_name); + if (str == NULL) { - printf (" %s: insufficient usable info, skipped\n", name); - return 0; + /* If searching for " XXX " failed, try " XXX\n". */ + size_t len = strlen (search_name); + char buffer[80]; + if (len >= sizeof buffer) + abort (); + memcpy (buffer, search_name, len + 1); + buffer[len - 1] = '\n'; + str = strstr (cpu_flags, buffer); } - printf (" %s: %d\n", name, flag); - if (strstr (cpu_flags, proc_name) != NULL) + if (str != NULL) found = 1; printf (" cpuinfo (%s): %d\n", proc_name, found); if (found != flag) - printf (" *** failure ***\n"); + { + if (found || usable) + printf (" *** failure ***\n"); + else + { + printf (" *** missing in /proc/cpuinfo ***\n"); + return 0; + } + } return (found != flag); } #define CHECK_PROC(str, name) \ - check_proc (#str, HAS_CPU_FEATURE (name), CPU_FEATURE_USABLE (name), \ - "HAS_CPU_FEATURE (" #name ")"); + check_proc (#str, " "#str" ", HAS_CPU_FEATURE (name), \ + CPU_FEATURE_USABLE (name), \ + "CPU_FEATURE_USABLE (" #name ")") static int do_test (int argc, char **argv) @@ -99,7 +116,7 @@ do_test (int argc, char **argv) fails += CHECK_PROC (avx512_bf16, AVX512_BF16); fails += CHECK_PROC (avx512_bitalg, AVX512_BITALG); fails += CHECK_PROC (avx512ifma, AVX512_IFMA); - fails += CHECK_PROC (avx512_vbmi, AVX512_VBMI); + fails += CHECK_PROC (avx512vbmi, AVX512_VBMI); fails += CHECK_PROC (avx512_vbmi2, AVX512_VBMI2); fails += CHECK_PROC (avx512_vnni, AVX512_VNNI); fails += CHECK_PROC (avx512_vp2intersect, AVX512_VP2INTERSECT); @@ -125,7 +142,7 @@ do_test (int argc, char **argv) fails += CHECK_PROC (dca, DCA); fails += CHECK_PROC (de, DE); fails += CHECK_PROC (zero_fcs_fds, DEPR_FPU_CS_DS); - fails += CHECK_PROC (ds, DS); + fails += CHECK_PROC (dts, DS); fails += CHECK_PROC (ds_cpl, DS_CPL); fails += CHECK_PROC (dtes64, DTES64); fails += CHECK_PROC (est, EIST); @@ -206,7 +223,7 @@ do_test (int argc, char **argv) fails += CHECK_PROC (ssbd, SSBD); fails += CHECK_PROC (sse, SSE); fails += CHECK_PROC (sse2, SSE2); - fails += CHECK_PROC (sse3, SSE3); + fails += CHECK_PROC (pni, SSE3); fails += CHECK_PROC (sse4_1, SSE4_1); fails += CHECK_PROC (sse4_2, SSE4_2); fails += CHECK_PROC (sse4a, SSE4A); @@ -223,7 +240,7 @@ do_test (int argc, char **argv) fails += CHECK_PROC (intel_pt, TRACE); fails += CHECK_PROC (tsc, TSC); fails += CHECK_PROC (tsc_adjust, TSC_ADJUST); - fails += CHECK_PROC (tsc_deadline, TSC_DEADLINE); + fails += CHECK_PROC (tsc_deadline_timer, TSC_DEADLINE); fails += CHECK_PROC (tsxldtrk, TSXLDTRK); fails += CHECK_PROC (umip, UMIP); fails += CHECK_PROC (vaes, VAES); -- 2.29.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] x86: Properly match CPU feature [BZ #27222] 2021-01-22 18:11 ` H.J. Lu via Libc-alpha @ 2021-02-02 11:07 ` Andreas Schwab 2021-02-02 15:01 ` [PATCH] <bits/platform/x86.h>: Correct x86_cpu_TBM H.J. Lu via Libc-alpha 0 siblings, 1 reply; 8+ messages in thread From: Andreas Schwab @ 2021-02-02 11:07 UTC (permalink / raw) To: H.J. Lu via Libc-alpha ------ FAIL: elf/tst-cpu-features-cpuinfo ------ Checking HAS_CPU_FEATURE (ACPI): HAS_CPU_FEATURE (ACPI): 0 cpuinfo (acpi): 0 Checking HAS_CPU_FEATURE (ADX): HAS_CPU_FEATURE (ADX): 0 cpuinfo (adx): 0 Checking HAS_CPU_FEATURE (APIC): HAS_CPU_FEATURE (APIC): 1 cpuinfo (apic): 1 Checking HAS_CPU_FEATURE (AES): HAS_CPU_FEATURE (AES): 1 cpuinfo (aes): 1 Checking HAS_CPU_FEATURE (AMX_BF16): HAS_CPU_FEATURE (AMX_BF16): 0 cpuinfo (amx_bf16): 0 Checking HAS_CPU_FEATURE (AMX_INT8): HAS_CPU_FEATURE (AMX_INT8): 0 cpuinfo (amx_int8): 0 Checking HAS_CPU_FEATURE (AMX_TILE): HAS_CPU_FEATURE (AMX_TILE): 0 cpuinfo (amx_tile): 0 Checking HAS_CPU_FEATURE (ARCH_CAPABILITIES): HAS_CPU_FEATURE (ARCH_CAPABILITIES): 1 cpuinfo (arch_capabilities): 1 Checking HAS_CPU_FEATURE (AVX): HAS_CPU_FEATURE (AVX): 1 cpuinfo (avx): 1 Checking HAS_CPU_FEATURE (AVX2): HAS_CPU_FEATURE (AVX2): 0 cpuinfo (avx2): 0 Checking HAS_CPU_FEATURE (AVX512_4FMAPS): HAS_CPU_FEATURE (AVX512_4FMAPS): 0 cpuinfo (avx512_4fmaps): 0 Checking HAS_CPU_FEATURE (AVX512_4VNNIW): HAS_CPU_FEATURE (AVX512_4VNNIW): 0 cpuinfo (avx512_4vnniw): 0 Checking HAS_CPU_FEATURE (AVX512_BF16): HAS_CPU_FEATURE (AVX512_BF16): 0 cpuinfo (avx512_bf16): 0 Checking HAS_CPU_FEATURE (AVX512_BITALG): HAS_CPU_FEATURE (AVX512_BITALG): 0 cpuinfo (avx512_bitalg): 0 Checking HAS_CPU_FEATURE (AVX512_IFMA): HAS_CPU_FEATURE (AVX512_IFMA): 0 cpuinfo (avx512ifma): 0 Checking HAS_CPU_FEATURE (AVX512_VBMI): HAS_CPU_FEATURE (AVX512_VBMI): 0 cpuinfo (avx512vbmi): 0 Checking HAS_CPU_FEATURE (AVX512_VBMI2): HAS_CPU_FEATURE (AVX512_VBMI2): 0 cpuinfo (avx512_vbmi2): 0 Checking HAS_CPU_FEATURE (AVX512_VNNI): HAS_CPU_FEATURE (AVX512_VNNI): 0 cpuinfo (avx512_vnni): 0 Checking HAS_CPU_FEATURE (AVX512_VP2INTERSECT): HAS_CPU_FEATURE (AVX512_VP2INTERSECT): 0 cpuinfo (avx512_vp2intersect): 0 Checking HAS_CPU_FEATURE (AVX512_VPOPCNTDQ): HAS_CPU_FEATURE (AVX512_VPOPCNTDQ): 0 cpuinfo (avx512_vpopcntdq): 0 Checking HAS_CPU_FEATURE (AVX512BW): HAS_CPU_FEATURE (AVX512BW): 0 cpuinfo (avx512bw): 0 Checking HAS_CPU_FEATURE (AVX512CD): HAS_CPU_FEATURE (AVX512CD): 0 cpuinfo (avx512cd): 0 Checking HAS_CPU_FEATURE (AVX512ER): HAS_CPU_FEATURE (AVX512ER): 0 cpuinfo (avx512er): 0 Checking HAS_CPU_FEATURE (AVX512DQ): HAS_CPU_FEATURE (AVX512DQ): 0 cpuinfo (avx512dq): 0 Checking HAS_CPU_FEATURE (AVX512F): HAS_CPU_FEATURE (AVX512F): 0 cpuinfo (avx512f): 0 Checking HAS_CPU_FEATURE (AVX512PF): HAS_CPU_FEATURE (AVX512PF): 0 cpuinfo (avx512pf): 0 Checking HAS_CPU_FEATURE (AVX512VL): HAS_CPU_FEATURE (AVX512VL): 0 cpuinfo (avx512vl): 0 Checking HAS_CPU_FEATURE (BMI1): HAS_CPU_FEATURE (BMI1): 1 cpuinfo (bmi1): 1 Checking HAS_CPU_FEATURE (BMI2): HAS_CPU_FEATURE (BMI2): 0 cpuinfo (bmi2): 0 Checking HAS_CPU_FEATURE (CLDEMOTE): HAS_CPU_FEATURE (CLDEMOTE): 0 cpuinfo (cldemote): 0 Checking HAS_CPU_FEATURE (CLFLUSHOPT): HAS_CPU_FEATURE (CLFLUSHOPT): 0 cpuinfo (clflushopt): 0 Checking HAS_CPU_FEATURE (CLFSH): HAS_CPU_FEATURE (CLFSH): 1 cpuinfo (clflush): 1 Checking HAS_CPU_FEATURE (CLWB): HAS_CPU_FEATURE (CLWB): 0 cpuinfo (clwb): 0 Checking HAS_CPU_FEATURE (CMOV): HAS_CPU_FEATURE (CMOV): 1 cpuinfo (cmov): 1 Checking HAS_CPU_FEATURE (CMPXCHG16B): HAS_CPU_FEATURE (CMPXCHG16B): 1 cpuinfo (cx16): 1 Checking HAS_CPU_FEATURE (CNXT_ID): HAS_CPU_FEATURE (CNXT_ID): 0 cpuinfo (cnxt_id): 0 Checking HAS_CPU_FEATURE (CORE_CAPABILITIES): HAS_CPU_FEATURE (CORE_CAPABILITIES): 0 cpuinfo (core_capabilities): 0 Checking HAS_CPU_FEATURE (CX8): HAS_CPU_FEATURE (CX8): 1 cpuinfo (cx8): 1 Checking HAS_CPU_FEATURE (DCA): HAS_CPU_FEATURE (DCA): 0 cpuinfo (dca): 0 Checking HAS_CPU_FEATURE (DE): HAS_CPU_FEATURE (DE): 1 cpuinfo (de): 1 Checking HAS_CPU_FEATURE (DEPR_FPU_CS_DS): HAS_CPU_FEATURE (DEPR_FPU_CS_DS): 0 cpuinfo (zero_fcs_fds): 0 Checking HAS_CPU_FEATURE (DS): HAS_CPU_FEATURE (DS): 0 cpuinfo (dts): 0 Checking HAS_CPU_FEATURE (DS_CPL): HAS_CPU_FEATURE (DS_CPL): 0 cpuinfo (ds_cpl): 0 Checking HAS_CPU_FEATURE (DTES64): HAS_CPU_FEATURE (DTES64): 0 cpuinfo (dtes64): 0 Checking HAS_CPU_FEATURE (EIST): HAS_CPU_FEATURE (EIST): 0 cpuinfo (est): 0 Checking HAS_CPU_FEATURE (ENQCMD): HAS_CPU_FEATURE (ENQCMD): 0 cpuinfo (enqcmd): 0 Checking HAS_CPU_FEATURE (ERMS): HAS_CPU_FEATURE (ERMS): 0 cpuinfo (erms): 0 Checking HAS_CPU_FEATURE (F16C): HAS_CPU_FEATURE (F16C): 1 cpuinfo (f16c): 1 Checking HAS_CPU_FEATURE (FMA): HAS_CPU_FEATURE (FMA): 1 cpuinfo (fma): 1 Checking HAS_CPU_FEATURE (FMA4): HAS_CPU_FEATURE (FMA4): 1 cpuinfo (fma4): 1 Checking HAS_CPU_FEATURE (FPU): HAS_CPU_FEATURE (FPU): 1 cpuinfo (fpu): 1 Checking HAS_CPU_FEATURE (FSGSBASE): HAS_CPU_FEATURE (FSGSBASE): 0 cpuinfo (fsgsbase): 0 Checking HAS_CPU_FEATURE (FSRM): HAS_CPU_FEATURE (FSRM): 0 cpuinfo (fsrm): 0 Checking HAS_CPU_FEATURE (FXSR): HAS_CPU_FEATURE (FXSR): 1 cpuinfo (fxsr): 1 Checking HAS_CPU_FEATURE (GFNI): HAS_CPU_FEATURE (GFNI): 0 cpuinfo (gfni): 0 Checking HAS_CPU_FEATURE (HLE): HAS_CPU_FEATURE (HLE): 0 cpuinfo (hle): 0 Checking HAS_CPU_FEATURE (HTT): HAS_CPU_FEATURE (HTT): 0 cpuinfo (ht): 0 Checking HAS_CPU_FEATURE (HYBRID): HAS_CPU_FEATURE (HYBRID): 0 cpuinfo (hybrid): 0 Checking HAS_CPU_FEATURE (IBRS_IBPB): HAS_CPU_FEATURE (IBRS_IBPB): 0 cpuinfo (ibrs): 0 Checking HAS_CPU_FEATURE (IBT): HAS_CPU_FEATURE (IBT): 0 cpuinfo (ibt): 0 Checking HAS_CPU_FEATURE (INVARIANT_TSC): HAS_CPU_FEATURE (INVARIANT_TSC): 0 cpuinfo (invariant_tsc): 0 Checking HAS_CPU_FEATURE (INVPCID): HAS_CPU_FEATURE (INVPCID): 0 cpuinfo (invpcid): 0 Checking HAS_CPU_FEATURE (L1D_FLUSH): HAS_CPU_FEATURE (L1D_FLUSH): 0 cpuinfo (flush_l1d): 0 Checking HAS_CPU_FEATURE (LAHF64_SAHF64): HAS_CPU_FEATURE (LAHF64_SAHF64): 1 cpuinfo (lahf_lm): 1 Checking HAS_CPU_FEATURE (LM): HAS_CPU_FEATURE (LM): 1 cpuinfo (lm): 1 Checking HAS_CPU_FEATURE (LWP): HAS_CPU_FEATURE (LWP): 0 cpuinfo (lwp): 0 Checking HAS_CPU_FEATURE (LZCNT): HAS_CPU_FEATURE (LZCNT): 1 cpuinfo (abm): 1 Checking HAS_CPU_FEATURE (MCA): HAS_CPU_FEATURE (MCA): 1 cpuinfo (mca): 1 Checking HAS_CPU_FEATURE (MCE): HAS_CPU_FEATURE (MCE): 1 cpuinfo (mce): 1 Checking HAS_CPU_FEATURE (MD_CLEAR): HAS_CPU_FEATURE (MD_CLEAR): 0 cpuinfo (md_clear): 0 Checking HAS_CPU_FEATURE (MMX): HAS_CPU_FEATURE (MMX): 1 cpuinfo (mmx): 1 Checking HAS_CPU_FEATURE (MONITOR): HAS_CPU_FEATURE (MONITOR): 0 cpuinfo (monitor): 0 Checking HAS_CPU_FEATURE (MOVBE): HAS_CPU_FEATURE (MOVBE): 0 cpuinfo (movbe): 0 Checking HAS_CPU_FEATURE (MOVDIRI): HAS_CPU_FEATURE (MOVDIRI): 0 cpuinfo (movdiri): 0 Checking HAS_CPU_FEATURE (MOVDIR64B): HAS_CPU_FEATURE (MOVDIR64B): 0 cpuinfo (movdir64b): 0 Checking HAS_CPU_FEATURE (MPX): HAS_CPU_FEATURE (MPX): 0 cpuinfo (mpx): 0 Checking HAS_CPU_FEATURE (MSR): HAS_CPU_FEATURE (MSR): 1 cpuinfo (msr): 1 Checking HAS_CPU_FEATURE (MTRR): HAS_CPU_FEATURE (MTRR): 1 cpuinfo (mtrr): 1 Checking HAS_CPU_FEATURE (NX): HAS_CPU_FEATURE (NX): 1 cpuinfo (nx): 1 Checking HAS_CPU_FEATURE (OSPKE): HAS_CPU_FEATURE (OSPKE): 0 cpuinfo (ospke): 0 Checking HAS_CPU_FEATURE (PAE): HAS_CPU_FEATURE (PAE): 1 cpuinfo (pae): 1 Checking HAS_CPU_FEATURE (PAGE1GB): HAS_CPU_FEATURE (PAGE1GB): 1 cpuinfo (pdpe1gb): 1 Checking HAS_CPU_FEATURE (PAT): HAS_CPU_FEATURE (PAT): 1 cpuinfo (pat): 1 Checking HAS_CPU_FEATURE (PBE): HAS_CPU_FEATURE (PBE): 0 cpuinfo (pbe): 0 Checking HAS_CPU_FEATURE (PCID): HAS_CPU_FEATURE (PCID): 0 cpuinfo (pcid): 0 Checking HAS_CPU_FEATURE (PCLMULQDQ): HAS_CPU_FEATURE (PCLMULQDQ): 1 cpuinfo (pclmulqdq): 1 Checking HAS_CPU_FEATURE (PCONFIG): HAS_CPU_FEATURE (PCONFIG): 0 cpuinfo (pconfig): 0 Checking HAS_CPU_FEATURE (PDCM): HAS_CPU_FEATURE (PDCM): 0 cpuinfo (pdcm): 0 Checking HAS_CPU_FEATURE (PGE): HAS_CPU_FEATURE (PGE): 1 cpuinfo (pge): 1 Checking HAS_CPU_FEATURE (PKS): HAS_CPU_FEATURE (PKS): 0 cpuinfo (pks): 0 Checking HAS_CPU_FEATURE (PKU): HAS_CPU_FEATURE (PKU): 0 cpuinfo (pku): 0 Checking HAS_CPU_FEATURE (POPCNT): HAS_CPU_FEATURE (POPCNT): 1 cpuinfo (popcnt): 1 Checking HAS_CPU_FEATURE (PREFETCHW): HAS_CPU_FEATURE (PREFETCHW): 1 cpuinfo (3dnowprefetch): 1 Checking HAS_CPU_FEATURE (PREFETCHWT1): HAS_CPU_FEATURE (PREFETCHWT1): 0 cpuinfo (prefetchwt1): 0 Checking HAS_CPU_FEATURE (PSE): HAS_CPU_FEATURE (PSE): 1 cpuinfo (pse): 1 Checking HAS_CPU_FEATURE (PSE_36): HAS_CPU_FEATURE (PSE_36): 1 cpuinfo (pse36): 1 Checking HAS_CPU_FEATURE (PSN): HAS_CPU_FEATURE (PSN): 0 cpuinfo (psn): 0 Checking HAS_CPU_FEATURE (RDPID): HAS_CPU_FEATURE (RDPID): 0 cpuinfo (rdpid): 0 Checking HAS_CPU_FEATURE (RDRAND): HAS_CPU_FEATURE (RDRAND): 0 cpuinfo (rdrand): 0 Checking HAS_CPU_FEATURE (RDSEED): HAS_CPU_FEATURE (RDSEED): 0 cpuinfo (rdseed): 0 Checking HAS_CPU_FEATURE (RDT_A): HAS_CPU_FEATURE (RDT_A): 0 cpuinfo (rdt_a): 0 Checking HAS_CPU_FEATURE (RDT_M): HAS_CPU_FEATURE (RDT_M): 0 cpuinfo (cqm): 0 Checking HAS_CPU_FEATURE (RDTSCP): HAS_CPU_FEATURE (RDTSCP): 1 cpuinfo (rdtscp): 1 Checking HAS_CPU_FEATURE (RTM): HAS_CPU_FEATURE (RTM): 0 cpuinfo (rtm): 0 Checking HAS_CPU_FEATURE (SDBG): HAS_CPU_FEATURE (SDBG): 0 cpuinfo (sdbg): 0 Checking HAS_CPU_FEATURE (SEP): HAS_CPU_FEATURE (SEP): 1 cpuinfo (sep): 1 Checking HAS_CPU_FEATURE (SERIALIZE): HAS_CPU_FEATURE (SERIALIZE): 0 cpuinfo (serialize): 0 Checking HAS_CPU_FEATURE (SGX): HAS_CPU_FEATURE (SGX): 0 cpuinfo (sgx): 0 Checking HAS_CPU_FEATURE (SGX_LC): HAS_CPU_FEATURE (SGX_LC): 0 cpuinfo (sgx_lc): 0 Checking HAS_CPU_FEATURE (SHA): HAS_CPU_FEATURE (SHA): 0 cpuinfo (sha_ni): 0 Checking HAS_CPU_FEATURE (SHSTK): HAS_CPU_FEATURE (SHSTK): 0 cpuinfo (shstk): 0 Checking HAS_CPU_FEATURE (SMAP): HAS_CPU_FEATURE (SMAP): 0 cpuinfo (smap): 0 Checking HAS_CPU_FEATURE (SMEP): HAS_CPU_FEATURE (SMEP): 0 cpuinfo (smep): 0 Checking HAS_CPU_FEATURE (SMX): HAS_CPU_FEATURE (SMX): 0 cpuinfo (smx): 0 Checking HAS_CPU_FEATURE (SS): HAS_CPU_FEATURE (SS): 0 cpuinfo (ss): 0 Checking HAS_CPU_FEATURE (SSBD): HAS_CPU_FEATURE (SSBD): 0 cpuinfo (ssbd): 1 *** failure *** Checking HAS_CPU_FEATURE (SSE): HAS_CPU_FEATURE (SSE): 1 cpuinfo (sse): 1 Checking HAS_CPU_FEATURE (SSE2): HAS_CPU_FEATURE (SSE2): 1 cpuinfo (sse2): 1 Checking HAS_CPU_FEATURE (SSE3): HAS_CPU_FEATURE (SSE3): 1 cpuinfo (pni): 1 Checking HAS_CPU_FEATURE (SSE4_1): HAS_CPU_FEATURE (SSE4_1): 1 cpuinfo (sse4_1): 1 Checking HAS_CPU_FEATURE (SSE4_2): HAS_CPU_FEATURE (SSE4_2): 1 cpuinfo (sse4_2): 1 Checking HAS_CPU_FEATURE (SSE4A): HAS_CPU_FEATURE (SSE4A): 1 cpuinfo (sse4a): 1 Checking HAS_CPU_FEATURE (SSSE3): HAS_CPU_FEATURE (SSSE3): 1 cpuinfo (ssse3): 1 Checking HAS_CPU_FEATURE (STIBP): HAS_CPU_FEATURE (STIBP): 0 cpuinfo (stibp): 0 Checking HAS_CPU_FEATURE (SVM): HAS_CPU_FEATURE (SVM): 1 cpuinfo (svm): 1 Checking HAS_CPU_FEATURE (TBM): HAS_CPU_FEATURE (TBM): 0 cpuinfo (tbm): 1 *** failure *** Checking HAS_CPU_FEATURE (TM): HAS_CPU_FEATURE (TM): 0 cpuinfo (tm): 0 Checking HAS_CPU_FEATURE (TM2): HAS_CPU_FEATURE (TM2): 0 cpuinfo (tm2): 0 Checking HAS_CPU_FEATURE (TRACE): HAS_CPU_FEATURE (TRACE): 0 cpuinfo (intel_pt): 0 Checking HAS_CPU_FEATURE (TSC): HAS_CPU_FEATURE (TSC): 1 cpuinfo (tsc): 1 Checking HAS_CPU_FEATURE (TSC_ADJUST): HAS_CPU_FEATURE (TSC_ADJUST): 1 cpuinfo (tsc_adjust): 1 Checking HAS_CPU_FEATURE (TSC_DEADLINE): HAS_CPU_FEATURE (TSC_DEADLINE): 1 cpuinfo (tsc_deadline_timer): 1 Checking HAS_CPU_FEATURE (TSXLDTRK): HAS_CPU_FEATURE (TSXLDTRK): 0 cpuinfo (tsxldtrk): 0 Checking HAS_CPU_FEATURE (UMIP): HAS_CPU_FEATURE (UMIP): 0 cpuinfo (umip): 0 Checking HAS_CPU_FEATURE (VAES): HAS_CPU_FEATURE (VAES): 0 cpuinfo (vaes): 0 Checking HAS_CPU_FEATURE (VME): HAS_CPU_FEATURE (VME): 1 cpuinfo (vme): 1 Checking HAS_CPU_FEATURE (VMX): HAS_CPU_FEATURE (VMX): 0 cpuinfo (vmx): 0 Checking HAS_CPU_FEATURE (VPCLMULQDQ): HAS_CPU_FEATURE (VPCLMULQDQ): 0 cpuinfo (vpclmulqdq): 0 Checking HAS_CPU_FEATURE (WAITPKG): HAS_CPU_FEATURE (WAITPKG): 0 cpuinfo (waitpkg): 0 Checking HAS_CPU_FEATURE (WBNOINVD): HAS_CPU_FEATURE (WBNOINVD): 0 cpuinfo (wbnoinvd): 0 Checking HAS_CPU_FEATURE (X2APIC): HAS_CPU_FEATURE (X2APIC): 1 cpuinfo (x2apic): 1 Checking HAS_CPU_FEATURE (XFD): HAS_CPU_FEATURE (XFD): 0 cpuinfo (xfd): 0 Checking HAS_CPU_FEATURE (XGETBV_ECX_1): HAS_CPU_FEATURE (XGETBV_ECX_1): 0 cpuinfo (xgetbv1): 0 Checking HAS_CPU_FEATURE (XOP): HAS_CPU_FEATURE (XOP): 1 cpuinfo (xop): 1 Checking HAS_CPU_FEATURE (XSAVE): HAS_CPU_FEATURE (XSAVE): 1 cpuinfo (xsave): 1 Checking HAS_CPU_FEATURE (XSAVEC): HAS_CPU_FEATURE (XSAVEC): 0 cpuinfo (xsavec): 0 Checking HAS_CPU_FEATURE (XSAVEOPT): HAS_CPU_FEATURE (XSAVEOPT): 0 cpuinfo (xsaveopt): 0 Checking HAS_CPU_FEATURE (XSAVES): HAS_CPU_FEATURE (XSAVES): 0 cpuinfo (xsaves): 0 Checking HAS_CPU_FEATURE (XTPRUPDCTRL): HAS_CPU_FEATURE (XTPRUPDCTRL): 0 cpuinfo (xtpr): 0 2 differences between /proc/cpuinfo and glibc code. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] <bits/platform/x86.h>: Correct x86_cpu_TBM 2021-02-02 11:07 ` Andreas Schwab @ 2021-02-02 15:01 ` H.J. Lu via Libc-alpha 2021-02-22 9:49 ` Florian Weimer via Libc-alpha 0 siblings, 1 reply; 8+ messages in thread From: H.J. Lu via Libc-alpha @ 2021-02-02 15:01 UTC (permalink / raw) To: Andreas Schwab; +Cc: libc-alpha On Tue, Feb 02, 2021 at 12:07:55PM +0100, Andreas Schwab wrote: > ------ FAIL: elf/tst-cpu-features-cpuinfo ------ > Checking HAS_CPU_FEATURE (SSBD): > HAS_CPU_FEATURE (SSBD): 0 > cpuinfo (ssbd): 1 > *** failure *** This should be fixed by https://sourceware.org/pipermail/libc-alpha/2021-February/122244.html > Checking HAS_CPU_FEATURE (TBM): > HAS_CPU_FEATURE (TBM): 0 > cpuinfo (tbm): 1 > *** failure *** Please try th patch enclosed here. > 2 differences between /proc/cpuinfo and glibc code. > Thanks. H.J. --- x86_cpu_TBM should be x86_cpu_index_80000001_ecx + 21. --- sysdeps/x86/bits/platform/x86.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sysdeps/x86/bits/platform/x86.h b/sysdeps/x86/bits/platform/x86.h index 8f423ae721..dd59224b7f 100644 --- a/sysdeps/x86/bits/platform/x86.h +++ b/sysdeps/x86/bits/platform/x86.h @@ -244,7 +244,7 @@ enum x86_cpu_XOP = x86_cpu_index_80000001_ecx + 11, x86_cpu_LWP = x86_cpu_index_80000001_ecx + 15, x86_cpu_FMA4 = x86_cpu_index_80000001_ecx + 16, - x86_cpu_TBM = x86_cpu_index_80000001_ecx + 20, + x86_cpu_TBM = x86_cpu_index_80000001_ecx + 21, x86_cpu_index_80000001_edx = (CPUID_INDEX_80000001 * 8 * 4 * sizeof (unsigned int) -- 2.29.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] <bits/platform/x86.h>: Correct x86_cpu_TBM 2021-02-02 15:01 ` [PATCH] <bits/platform/x86.h>: Correct x86_cpu_TBM H.J. Lu via Libc-alpha @ 2021-02-22 9:49 ` Florian Weimer via Libc-alpha 2022-02-17 0:10 ` H.J. Lu via Libc-alpha 0 siblings, 1 reply; 8+ messages in thread From: Florian Weimer via Libc-alpha @ 2021-02-22 9:49 UTC (permalink / raw) To: H.J. Lu via Libc-alpha; +Cc: Andreas Schwab * H. J. Lu via Libc-alpha: >> Checking HAS_CPU_FEATURE (TBM): >> HAS_CPU_FEATURE (TBM): 0 >> cpuinfo (tbm): 1 >> *** failure *** > > Please try th patch enclosed here. > >> 2 differences between /proc/cpuinfo and glibc code. >> > > Thanks. > > H.J. > --- > x86_cpu_TBM should be x86_cpu_index_80000001_ecx + 21. > --- > sysdeps/x86/bits/platform/x86.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sysdeps/x86/bits/platform/x86.h b/sysdeps/x86/bits/platform/x86.h > index 8f423ae721..dd59224b7f 100644 > --- a/sysdeps/x86/bits/platform/x86.h > +++ b/sysdeps/x86/bits/platform/x86.h > @@ -244,7 +244,7 @@ enum > x86_cpu_XOP = x86_cpu_index_80000001_ecx + 11, > x86_cpu_LWP = x86_cpu_index_80000001_ecx + 15, > x86_cpu_FMA4 = x86_cpu_index_80000001_ecx + 16, > - x86_cpu_TBM = x86_cpu_index_80000001_ecx + 20, > + x86_cpu_TBM = x86_cpu_index_80000001_ecx + 21, > > x86_cpu_index_80000001_edx > = (CPUID_INDEX_80000001 * 8 * 4 * sizeof (unsigned int) I've verified this works works on a system with tbm in /proc/cpuinfo. the bit offset also matches what's documented elsewhere. Looks good to me. Thanks, Florian ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] <bits/platform/x86.h>: Correct x86_cpu_TBM 2021-02-22 9:49 ` Florian Weimer via Libc-alpha @ 2022-02-17 0:10 ` H.J. Lu via Libc-alpha 0 siblings, 0 replies; 8+ messages in thread From: H.J. Lu via Libc-alpha @ 2022-02-17 0:10 UTC (permalink / raw) To: Florian Weimer, Sunil K Pandey; +Cc: Andreas Schwab, H.J. Lu via Libc-alpha On Mon, Feb 22, 2021 at 1:49 AM Florian Weimer <fweimer@redhat.com> wrote: > > * H. J. Lu via Libc-alpha: > > >> Checking HAS_CPU_FEATURE (TBM): > >> HAS_CPU_FEATURE (TBM): 0 > >> cpuinfo (tbm): 1 > >> *** failure *** > > > > Please try th patch enclosed here. > > > >> 2 differences between /proc/cpuinfo and glibc code. > >> > > > > Thanks. > > > > H.J. > > --- > > x86_cpu_TBM should be x86_cpu_index_80000001_ecx + 21. > > --- > > sysdeps/x86/bits/platform/x86.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/sysdeps/x86/bits/platform/x86.h b/sysdeps/x86/bits/platform/x86.h > > index 8f423ae721..dd59224b7f 100644 > > --- a/sysdeps/x86/bits/platform/x86.h > > +++ b/sysdeps/x86/bits/platform/x86.h > > @@ -244,7 +244,7 @@ enum > > x86_cpu_XOP = x86_cpu_index_80000001_ecx + 11, > > x86_cpu_LWP = x86_cpu_index_80000001_ecx + 15, > > x86_cpu_FMA4 = x86_cpu_index_80000001_ecx + 16, > > - x86_cpu_TBM = x86_cpu_index_80000001_ecx + 20, > > + x86_cpu_TBM = x86_cpu_index_80000001_ecx + 21, > > > > x86_cpu_index_80000001_edx > > = (CPUID_INDEX_80000001 * 8 * 4 * sizeof (unsigned int) > > I've verified this works works on a system with tbm in /proc/cpuinfo. > the bit offset also matches what's documented elsewhere. Looks good to > me. > > Thanks, > Florian > I am backporting this to 2.33 branch. -- H.J. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-02-17 0:11 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-01-21 19:47 [PATCH] x86: Properly match CPU feature [BZ #27222] H.J. Lu via Libc-alpha 2021-01-22 15:01 ` H.J. Lu via Libc-alpha 2021-01-22 16:56 ` Adhemerval Zanella via Libc-alpha 2021-01-22 18:11 ` H.J. Lu via Libc-alpha 2021-02-02 11:07 ` Andreas Schwab 2021-02-02 15:01 ` [PATCH] <bits/platform/x86.h>: Correct x86_cpu_TBM H.J. Lu via Libc-alpha 2021-02-22 9:49 ` Florian Weimer via Libc-alpha 2022-02-17 0:10 ` H.J. Lu via Libc-alpha
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).