View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0017925 | CentOS-7 | kernel | public | 2020-12-09 12:03 | 2020-12-15 23:04 |
Reporter | Jerome Borsboom | Assigned To | |||
Priority | normal | Severity | major | Reproducibility | always |
Status | assigned | Resolution | open | ||
Product Version | 7.9.2009 | ||||
Summary | 0017925: 32-bit i686 kernel fails to boot properly or even crashes on multi-cpu systems with 'pcid' cpu feature | ||||
Description | When booting a recent 32-bit i686 kernel on a multi-cpu system with 'pcid' cpu feature, only the boot cpu is correctly initialized. The other cpu's fail to initialize, resulting in a badly running or crashing kernel. The reason is two missing patches present in vanilla upstream kernels: x86/mm: Disable PCID on 32-bit kernels x86/mm/32: Move setup_clear_cpu_cap(X86_FEATURE_PCID) earlier diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 775f10100d7fe..c9176bae7fd8c 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -904,6 +904,14 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) setup_force_cpu_cap(X86_FEATURE_ALWAYS); fpu__init_system(c); + +#ifdef CONFIG_X86_32 + /* + * Regardless of whether PCID is enumerated, the SDM says + * that it can't be enabled in 32-bit mode. + */ + setup_clear_cpu_cap(X86_FEATURE_PCID); +#endif } void __init early_cpu_init(void) Without this patch, the kernel will try to set the PCIDE bit in the CR4 register in start_secondary which is not allowed in 32-bit mode. | ||||
Tags | kernel | ||||
abrt_hash | |||||
URL | |||||
We will look into this. | |
Patch to be added. centos-3.10-i686-fix-pcid-bug17925.patch (1,037 bytes)
centos-3.10-i686-fix-pcid-bug17925.patch https://bugs.centos.org/view.php?id=17925 When booting a recent 32-bit i686 kernel on a multi-cpu system with 'pcid' cpu feature, only the boot cpu is correctly initialized. The other cpu's fail to initialize, resulting in a badly running or crashing kernel. The reason is two missing patches present in vanilla upstream kernels: x86/mm: Disable PCID on 32-bit kernels x86/mm/32: Move setup_clear_cpu_cap(X86_FEATURE_PCID) earlier Submitted-by: Jerome Borsboom Applied-by: Akemi Yagi <toracat@centos.org> --- a/arch/x86/kernel/cpu/common.c 2020-10-21 10:17:08.000000000 -0700 +++ b/arch/x86/kernel/cpu/common.c 2020-12-09 22:10:47.945329193 -0800 @@ -1131,6 +1131,14 @@ static void __init early_identify_cpu(st this_cpu->c_bsp_init(c); cpu_set_bug_bits(c); + +#ifdef CONFIG_X86_32 + /* + * Regardless of whether PCID is enumerated, the SDM says + * that it can't be enabled in 32-bit mode. + */ + setup_clear_cpu_cap(X86_FEATURE_PCID); +#endif } void __init early_cpu_init(void) |
|
The patch will be applied to kernel-3.10.0-1160.11.1.el7.centos.plus. | |
Date Modified | Username | Field | Change |
---|---|---|---|
2020-12-09 12:03 | Jerome Borsboom | New Issue | |
2020-12-09 12:03 | Jerome Borsboom | Tag Attached: kernel | |
2020-12-09 18:43 | toracat | Status | new => assigned |
2020-12-09 18:43 | toracat | Note Added: 0038055 | |
2020-12-10 06:29 | toracat | File Added: centos-3.10-i686-fix-pcid-bug17925.patch | |
2020-12-10 06:29 | toracat | Note Added: 0038060 | |
2020-12-15 23:04 | toracat | Note Added: 0038087 |