This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch release/2.26/master updated. glibc-2.26-173-gc9570bd
- From: hjl at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 29 Jul 2018 13:54:43 -0000
- Subject: GNU C Library master sources branch release/2.26/master updated. glibc-2.26-173-gc9570bd
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, release/2.26/master has been updated
via c9570bd2f54abb68e4e3c767aca3a54e05d2c7f6 (commit)
via 86e0996b1a02b3b46185f5fd28b78f0223956008 (commit)
from cf6deb084bcc68d3e0753270b46c2098c76d829c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c9570bd2f54abb68e4e3c767aca3a54e05d2c7f6
commit c9570bd2f54abb68e4e3c767aca3a54e05d2c7f6
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Sun Jul 29 06:08:59 2018 -0700
x86: Populate COMMON_CPUID_INDEX_80000001 for Intel CPUs [BZ #23459]
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
[BZ #23459]
* sysdeps/x86/cpu-features.c (get_extended_indices): New
function.
(init_cpu_features): Call get_extended_indices for both Intel
and AMD CPUs.
* sysdeps/x86/cpu-features.h (COMMON_CPUID_INDEX_80000001):
Remove "for AMD" comment.
(cherry picked from commit be525a69a6630abc83144c0a96474f2e26da7443)
diff --git a/ChangeLog b/ChangeLog
index 8315795..7e22bd1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
2018-07-29 H.J. Lu <hongjiu.lu@intel.com>
+ [BZ #23459]
+ * sysdeps/x86/cpu-features.c (get_extended_indices): New
+ function.
+ (init_cpu_features): Call get_extended_indices for both Intel
+ and AMD CPUs.
+ * sysdeps/x86/cpu-features.h (COMMON_CPUID_INDEX_80000001):
+ Remove "for AMD" comment.
+
+2018-07-29 H.J. Lu <hongjiu.lu@intel.com>
+
[BZ #23456]
* sysdeps/x86/cpu-features.h (index_cpu_LZCNT): Set to
COMMON_CPUID_INDEX_80000001.
diff --git a/NEWS b/NEWS
index e0c11b1..61ac02c 100644
--- a/NEWS
+++ b/NEWS
@@ -148,6 +148,7 @@ The following bugs are resolved with this release:
[23349] Various glibc headers no longer compatible with <linux/time.h>
[23363] stdio-common/tst-printf.c has non-free license
[23456] Wrong index_cpu_LZCNT
+ [23459] COMMON_CPUID_INDEX_80000001 isn't populated for Intel processors
Version 2.26
diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
index 87aaa86..a66d468 100644
--- a/sysdeps/x86/cpu-features.c
+++ b/sysdeps/x86/cpu-features.c
@@ -31,6 +31,20 @@ extern void TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *)
#endif
static void
+get_extended_indices (struct cpu_features *cpu_features)
+{
+ unsigned int eax, ebx, ecx, edx;
+ __cpuid (0x80000000, eax, ebx, ecx, edx);
+ if (eax >= 0x80000001)
+ __cpuid (0x80000001,
+ cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].eax,
+ cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ebx,
+ cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ecx,
+ cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].edx);
+
+}
+
+static void
get_common_indeces (struct cpu_features *cpu_features,
unsigned int *family, unsigned int *model,
unsigned int *extended_model, unsigned int *stepping)
@@ -205,6 +219,8 @@ init_cpu_features (struct cpu_features *cpu_features)
get_common_indeces (cpu_features, &family, &model, &extended_model,
&stepping);
+ get_extended_indices (cpu_features);
+
if (family == 0x06)
{
model += extended_model;
@@ -324,16 +340,9 @@ init_cpu_features (struct cpu_features *cpu_features)
get_common_indeces (cpu_features, &family, &model, &extended_model,
&stepping);
- ecx = cpu_features->cpuid[COMMON_CPUID_INDEX_1].ecx;
+ get_extended_indices (cpu_features);
- unsigned int eax;
- __cpuid (0x80000000, eax, ebx, ecx, edx);
- if (eax >= 0x80000001)
- __cpuid (0x80000001,
- cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].eax,
- cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ebx,
- cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ecx,
- cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].edx);
+ ecx = cpu_features->cpuid[COMMON_CPUID_INDEX_1].ecx;
if (HAS_ARCH_FEATURE (AVX_Usable))
{
diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h
index a6fae06..e4eb6bf 100644
--- a/sysdeps/x86/cpu-features.h
+++ b/sysdeps/x86/cpu-features.h
@@ -196,7 +196,7 @@ enum
{
COMMON_CPUID_INDEX_1 = 0,
COMMON_CPUID_INDEX_7,
- COMMON_CPUID_INDEX_80000001, /* for AMD */
+ COMMON_CPUID_INDEX_80000001,
/* Keep the following line at the end. */
COMMON_CPUID_INDEX_MAX
};
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=86e0996b1a02b3b46185f5fd28b78f0223956008
commit 86e0996b1a02b3b46185f5fd28b78f0223956008
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Sun Jul 29 06:08:59 2018 -0700
x86: Correct index_cpu_LZCNT [BZ #23456]
cpu-features.h has
#define bit_cpu_LZCNT (1 << 5)
#define index_cpu_LZCNT COMMON_CPUID_INDEX_1
#define reg_LZCNT
But the LZCNT feature bit is in COMMON_CPUID_INDEX_80000001:
Initial EAX Value: 80000001H
ECX Extended Processor Signature and Feature Bits:
Bit 05: LZCNT available
index_cpu_LZCNT should be COMMON_CPUID_INDEX_80000001, not
COMMON_CPUID_INDEX_1. The VMX feature bit is in COMMON_CPUID_INDEX_1:
Initial EAX Value: 01H
Feature Information Returned in the ECX Register:
5 VMX
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
[BZ #23456]
* sysdeps/x86/cpu-features.h (index_cpu_LZCNT): Set to
COMMON_CPUID_INDEX_80000001.
(cherry picked from commit 65d87ade1ee6f3ac099105e3511bd09bdc24cf3f)
diff --git a/ChangeLog b/ChangeLog
index 39d910f..8315795 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-07-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ [BZ #23456]
+ * sysdeps/x86/cpu-features.h (index_cpu_LZCNT): Set to
+ COMMON_CPUID_INDEX_80000001.
+
2018-07-06 Florian Weimer <fweimer@redhat.com>
* conform/conformtest.pl (checknamespace): Escape literal braces
diff --git a/NEWS b/NEWS
index fa62181..e0c11b1 100644
--- a/NEWS
+++ b/NEWS
@@ -147,6 +147,7 @@ The following bugs are resolved with this release:
[23313] libio: Disable vtable validation in case of interposition
[23349] Various glibc headers no longer compatible with <linux/time.h>
[23363] stdio-common/tst-printf.c has non-free license
+ [23456] Wrong index_cpu_LZCNT
Version 2.26
diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h
index 1d88f7a..a6fae06 100644
--- a/sysdeps/x86/cpu-features.h
+++ b/sysdeps/x86/cpu-features.h
@@ -292,7 +292,7 @@ extern const struct cpu_features *__get_cpu_features (void)
# define index_cpu_HTT COMMON_CPUID_INDEX_1
# define index_cpu_BMI1 COMMON_CPUID_INDEX_7
# define index_cpu_BMI2 COMMON_CPUID_INDEX_7
-# define index_cpu_LZCNT COMMON_CPUID_INDEX_1
+# define index_cpu_LZCNT COMMON_CPUID_INDEX_80000001
# define index_cpu_MOVBE COMMON_CPUID_INDEX_1
# define index_cpu_POPCNT COMMON_CPUID_INDEX_1
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 16 ++++++++++++++++
NEWS | 2 ++
sysdeps/x86/cpu-features.c | 27 ++++++++++++++++++---------
sysdeps/x86/cpu-features.h | 4 ++--
4 files changed, 38 insertions(+), 11 deletions(-)
hooks/post-receive
--
GNU C Library master sources