| commit 28c13ae5bbc81aa2ae67890ce53e65257d4703a4 |
| Author: H.J. Lu <hjl.tools@gmail.com> |
| Date: Mon Jul 6 06:57:08 2020 -0700 |
| |
| x86: Detect Extended Feature Disable (XFD) |
| |
| An extension called extended feature disable (XFD) is an extension added |
| for Intel AMX to the XSAVE feature set that allows an operating system |
| to enable a feature while preventing specific user threads from using |
| the feature. |
| |
| diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h |
| index 535b3cb2d25b245b..e7ea9e8ece3e8211 100644 |
| |
| |
| @@ -393,6 +393,7 @@ extern const struct cpu_features *__get_cpu_features (void) |
| #define bit_cpu_XSAVEC (1u << 1) |
| #define bit_cpu_XGETBV_ECX_1 (1u << 2) |
| #define bit_cpu_XSAVES (1u << 3) |
| +#define bit_cpu_XFD (1u << 4) |
| |
| /* COMMON_CPUID_INDEX_80000007. */ |
| |
| @@ -578,6 +579,7 @@ extern const struct cpu_features *__get_cpu_features (void) |
| #define index_cpu_XSAVEC COMMON_CPUID_INDEX_D_ECX_1 |
| #define index_cpu_XGETBV_ECX_1 COMMON_CPUID_INDEX_D_ECX_1 |
| #define index_cpu_XSAVES COMMON_CPUID_INDEX_D_ECX_1 |
| +#define index_cpu_XFD COMMON_CPUID_INDEX_D_ECX_1 |
| |
| /* COMMON_CPUID_INDEX_80000007. */ |
| |
| @@ -763,6 +765,7 @@ extern const struct cpu_features *__get_cpu_features (void) |
| #define reg_XSAVEC eax |
| #define reg_XGETBV_ECX_1 eax |
| #define reg_XSAVES eax |
| +#define reg_XFD eax |
| |
| /* COMMON_CPUID_INDEX_80000007. */ |
| |
| diff --git a/sysdeps/x86/tst-get-cpu-features.c b/sysdeps/x86/tst-get-cpu-features.c |
| index c4d91be3a48de886..c56f309ba0736c0d 100644 |
| |
| |
| @@ -212,6 +212,7 @@ do_test (void) |
| CHECK_CPU_FEATURE (XSAVEC); |
| CHECK_CPU_FEATURE (XGETBV_ECX_1); |
| CHECK_CPU_FEATURE (XSAVES); |
| + CHECK_CPU_FEATURE (XFD); |
| CHECK_CPU_FEATURE (INVARIANT_TSC); |
| CHECK_CPU_FEATURE (WBNOINVD); |
| CHECK_CPU_FEATURE (AVX512_BF16); |