I am unable to enable SMT on my fedora 32 install with kernel 5.8.18-200.fc32.x86_64. I have hyperthreading enabled in the bios. I have tried to turn off mitigations in the kernel with ‘mitigations=off’. However, the kernel still seems to disable smt. Does ‘mitigations=off’ actually work with this version of fedora?
Weird, normally it’s on by default. Have you tried disabling it on your own before? What does lscpu
and cat /proc/cmdline
output?
Maybe this list of ways to disable SMT will direct you towards a solution: https://access.redhat.com/solutions/rhel-smt
I guess my problem isn’t that the kernel ignores mitigations=off
, it’s just that it still disables SMT. The output for lscpu
changes if I turn off mitigations (lower down in this message). I’m really just wanting to enable SMT. Here is the output that you requested with mitigations=off
:
$ cat /proc/cmdline
BOOT_IMAGE=(hd1,gpt2)/vmlinuz-5.8.18-200.fc32.x86_64 root=/dev/mapper/fedora-root00 ro rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 resume=/dev/mapper/fedora-swap00 rd.lvm.lv=fedora/root00 rd.lvm.lv=fedora/swap00 rhgb quiet acpi=off apm=off mitigations=off
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 6
On-line CPU(s) list: 0-5
Thread(s) per core: 1
Core(s) per socket: 6
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 158
Model name: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
Stepping: 10
CPU MHz: 800.073
CPU max MHz: 4700.0000
CPU min MHz: 800.0000
BogoMIPS: 7399.70
Virtualization: VT-x
L1d cache: 192 KiB
L1i cache: 192 KiB
L2 cache: 1.5 MiB
L3 cache: 12 MiB
NUMA node0 CPU(s): 0-5
Vulnerability Itlb multihit: KVM: Mitigation: VMX disabled
Vulnerability L1tf: Mitigation; PTE Inversion; VMX vulnerable, SMT
disabled
Vulnerability Mds: Vulnerable; SMT disabled
Vulnerability Meltdown: Vulnerable
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Vulnerable: __user pointer sanitization and use
rcopy barriers only; no swapgs barriers
Vulnerability Spectre v2: Vulnerable, IBPB: disabled, STIBP: disabled
Vulnerability Srbds: Vulnerable
Vulnerability Tsx async abort: Vulnerable
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtr
r pge mca cmov pat pse36 clflush dts acpi mmx f
xsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rd
tscp lm constant_tsc art arch_perfmon pebs bts
rep_good nopl xtopology nonstop_tsc cpuid aperf
mperf pni pclmulqdq dtes64 monitor ds_cpl vmx s
mx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid s
se4_1 sse4_2 x2apic movbe popcnt tsc_deadline_t
imer aes xsave avx f16c rdrand lahf_lm abm 3dno
wprefetch cpuid_fault epb invpcid_single ssbd i
brs ibpb stibp tpr_shadow vnmi flexpriority ept
vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2
smep bmi2 erms invpcid rtm mpx rdseed adx smap
clflushopt intel_pt xsaveopt xsavec xgetbv1 xsa
ves dtherm ida arat pln pts hwp hwp_notify hwp_
act_window hwp_epp md_clear flush_l1d
If I leave out the mitigations=off
argument, I get this:
$lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 6
On-line CPU(s) list: 0-5
Thread(s) per core: 1
Core(s) per socket: 6
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 158
Model name: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
Stepping: 10
CPU MHz: 799.997
CPU max MHz: 4700.0000
CPU min MHz: 800.0000
BogoMIPS: 7399.70
Virtualization: VT-x
L1d cache: 192 KiB
L1i cache: 192 KiB
L2 cache: 1.5 MiB
L3 cache: 12 MiB
NUMA node0 CPU(s): 0-5
Vulnerability Itlb multihit: KVM: Mitigation: VMX disabled
Vulnerability L1tf: Mitigation; PTE Inversion; VMX conditional cach
e flushes, SMT disabled
Vulnerability Mds: Mitigation; Clear CPU buffers; SMT disabled
Vulnerability Meltdown: Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled v
ia prctl and seccomp
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user
pointer sanitization
Vulnerability Spectre v2: Mitigation; Full generic retpoline, IBPB condit
ional, IBRS_FW, RSB filling
Vulnerability Srbds: Mitigation; Microcode
Vulnerability Tsx async abort: Mitigation; Clear CPU buffers; SMT disabled
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtr
r pge mca cmov pat pse36 clflush dts acpi mmx f
xsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rd
tscp lm constant_tsc art arch_perfmon pebs bts
rep_good nopl xtopology nonstop_tsc cpuid aperf
mperf pni pclmulqdq dtes64 monitor ds_cpl vmx s
mx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid s
se4_1 sse4_2 x2apic movbe popcnt tsc_deadline_t
imer aes xsave avx f16c rdrand lahf_lm abm 3dno
wprefetch cpuid_fault epb invpcid_single pti ss
bd ibrs ibpb stibp tpr_shadow vnmi flexpriority
ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle a
vx2 smep bmi2 erms invpcid rtm mpx rdseed adx s
map clflushopt intel_pt xsaveopt xsavec xgetbv1
xsaves dtherm ida arat pln pts hwp hwp_notify
hwp_act_window hwp_epp md_clear flush_l1d
In both cases, SMT is disabled. Also, here is the output from dmidecode, which seems to show that hyperthreading is enabled in the bios (Core count 6, Thread count 12):
Processor Information
Socket Designation: LGA1151
Type: Central Processor
Family: Core i7
Manufacturer: Intel(R) Corporation
ID: EA 06 09 00 FF FB EB BF
Signature: Type 0, Family 6, Model 158, Stepping 10
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
Voltage: 1.1 V
External Clock: 100 MHz
Max Speed: 8300 MHz
Current Speed: 4300 MHz
Status: Populated, Enabled
Upgrade: Socket LGA1151
L1 Cache Handle: 0x0048
L2 Cache Handle: 0x0049
L3 Cache Handle: 0x004A
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 6
Core Enabled: 6
Thread Count: 12
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control
I’m trying to enable it, not disable.
I understand, I meant that using that article you can check whether any of listed options (don’t know if there are any other available) for disabling SMT is enabled.
Maybe dmesg | grep -ie SMT -e HT -e thread
will show why kernel is disabling SMT.
What happens if you start a live system from USB stick?
Do you have any BIOS updates available?
Try smt=12
kernel parameter.
I tried your suggestion for smt=12
, with no change. I will see if there are bios updates.
I updated my bios with no change
Not sure what else to try
This checks SMT status, enables it and checks again.
cat /sys/devices/system/cpu/smt/active
echo on > /sys/devices/system/cpu/smt/control
cat /sys/devices/system/cpu/smt/active
And how about live-booting Fedora or any other distro from usb drive, just to verify?
I’ll try doing a live boot. I just need to make an image. Thanks for the suggestion. I’ll post the result
Live booting enables hyperthreading, and shows 12 processors.
The problem is that I had acpi=off. I had turned it off because I was getting sporadic server freezes, and acpi=off fixed the problem. I’ll have to either live with the freezes or live without the extra threads.
Maybe bios update fixed the ACPI issue. If not, it can always be further troubleshot and fixed, for example by tuning bios settings. Good luck!