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)
This commit is contained in:
H.J. Lu 2018-07-29 06:08:59 -07:00
parent 8623cfe300
commit a452341529
3 changed files with 8 additions and 1 deletions

View File

@ -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-10 Florian Weimer <fweimer@redhat.com>
[BZ #23036]

1
NEWS
View File

@ -87,6 +87,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.27

View File

@ -202,7 +202,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
# define index_cpu_IBT COMMON_CPUID_INDEX_7