From fc6aa55dc632a9870334a6f91d31716e3fea536a Mon Sep 17 00:00:00 2001 Message-Id: In-Reply-To: <94968b7fa9b14e71f004474d7ce77e189e6a2bf3.1349175436.git.minovotn@redhat.com> References: <94968b7fa9b14e71f004474d7ce77e189e6a2bf3.1349175436.git.minovotn@redhat.com> From: Eduardo Habkost Date: Fri, 28 Sep 2012 16:50:16 +0200 Subject: [PATCH 12/34] disable SEP on all CPU models RH-Author: Eduardo Habkost Message-id: <1348851023-31907-12-git-send-email-ehabkost@redhat.com> Patchwork-id: 42505 O-Subject: [RHEL6 qemu-kvm PATCH 11/18] disable SEP on all CPU models Bugzilla: 745717 RH-Acked-by: Alex Williamson RH-Acked-by: Paolo Bonzini RH-Acked-by: Igor Mammedov RH-Acked-by: Orit Wasserman Bugzilla: 745717 Upstream status: not applicable While we don't fix bz#821463 in the kernel, SEP is not being exposed to the guest, unless execshield is disabled. This patch changes all CPU models to not expose SEP to reflect reality and not cause problems on live-migration to RHEL-6.4 after we fix the kernel bug. For previous discussions about this, see Message-ID: <504839E8.5020407@redhat.com on the virt-devel archives. Always disabling SEP on -Mrhel6.3.0 would cause problems if and only if: - The host has exec-shield=0; - It is running a 32-bit guest; - It is migrating backwards, from a 6.4 host to 6.3; and - Guest userspace tries to make tricks like detecting at runtime (not boot time) if SEP is available. The necessary conditions are so strict that the solution we (Gleb, Orit, myself) agreed upon is: just disable SEP on -Mrhel6.3.0[1] and document a known issue with "exec-shield=0" and 32-bit guests on RHEL-6.3.0 hosts. [1] Right now we have to disable it on both rhel6.3.0 and rhel6.4.0, until we fix the kernel bug (bz#821463) When the kernel bug gets fixed, we can add machine-type compatibility bit that will enable SEP only on newer machine-types. The task of enabling SEP on the rhel6.4.0 machine-type is tracked at bz#821741. Signed-off-by: Eduardo Habkost --- target-i386/cpuid.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) Signed-off-by: Michal Novotny --- target-i386/cpuid.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c index 9acf858..d77f765 100644 --- a/target-i386/cpuid.c +++ b/target-i386/cpuid.c @@ -197,14 +197,14 @@ typedef struct x86_def_t { #define I486_FEATURES (CPUID_FP87 | CPUID_VME | CPUID_PSE) #define PENTIUM_FEATURES (I486_FEATURES | CPUID_DE | CPUID_TSC | \ CPUID_MSR | CPUID_MCE | CPUID_CX8 | CPUID_MMX) -#define PENTIUM2_FEATURES (PENTIUM_FEATURES | CPUID_PAE | CPUID_SEP | \ +#define PENTIUM2_FEATURES (PENTIUM_FEATURES | CPUID_PAE | \ CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | CPUID_PAT | \ CPUID_PSE36 | CPUID_FXSR) #define PENTIUM3_FEATURES (PENTIUM2_FEATURES | CPUID_SSE) #define PPRO_FEATURES (CPUID_FP87 | CPUID_DE | CPUID_PSE | CPUID_TSC | \ CPUID_MSR | CPUID_MCE | CPUID_CX8 | CPUID_PGE | CPUID_CMOV | \ CPUID_PAT | CPUID_FXSR | CPUID_MMX | CPUID_SSE | CPUID_SSE2 | \ - CPUID_PAE | CPUID_SEP | CPUID_APIC) + CPUID_PAE | CPUID_APIC) /* maintains list of cpu model definitions */ @@ -427,7 +427,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 3, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_CX16 | CPUID_EXT_SSE3, @@ -452,7 +452,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 3, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_SSE3, @@ -477,7 +477,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 3, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_X2APIC | CPUID_EXT_SSSE3 | CPUID_EXT_SSE3, @@ -497,7 +497,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 3, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_X2APIC | CPUID_EXT_SSE41 | CPUID_EXT_CX16 | @@ -518,7 +518,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 3, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_POPCNT | CPUID_EXT_X2APIC | CPUID_EXT_SSE42 | @@ -539,7 +539,7 @@ static x86_def_t builtin_x86_defs[] = { .model = 44, .stepping = 1, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | - CPUID_PAT | CPUID_CMOV | CPUID_PGE | CPUID_SEP | CPUID_APIC | + CPUID_PAT | CPUID_CMOV | CPUID_PGE | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87 | CPUID_MTRR | CPUID_CLFLUSH | CPUID_MCA | CPUID_PSE36, @@ -566,7 +566,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 1, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_AVX | CPUID_EXT_XSAVE | CPUID_EXT_AES | @@ -589,7 +589,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 1, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_X2APIC | CPUID_EXT_SSE3, @@ -613,7 +613,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 1, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_X2APIC | CPUID_EXT_CX16 | CPUID_EXT_SSE3, @@ -638,7 +638,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 1, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_POPCNT | CPUID_EXT_X2APIC | CPUID_EXT_CX16 | @@ -665,7 +665,7 @@ static x86_def_t builtin_x86_defs[] = { .stepping = 2, .features = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | - CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | + CPUID_PGE | CPUID_MTRR | CPUID_APIC | CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE | CPUID_FP87, .ext_features = CPUID_EXT_AVX | CPUID_EXT_XSAVE | CPUID_EXT_AES | -- 1.7.11.4