[coreboot] Disabling hyper-threading on Ivy Bridge

Nico Huber nico.h at gmx.de
Sat Jan 13 17:13:01 CET 2018


Hi Davíð,

On 13.01.2018 15:34, Davíð Steinn Geirsson wrote:
> I am hoping to build coreboot with hyper-threading (SMT) disabled. I
> guess this can be done by skipping over the right processor IDs in
> the for loop in intel_cores_init in
> src/cpu/intel/model_206ax/model_206ax_init.c:470 ?

no, you can't just ignore (logical) cores there. I suppose they would
still be visible to the OS but not functional.

It seems the PCH is supposed to tell the CPU package after reset how
many (logical) cores should be enabled. There is a register to override
the settings: SOFT_RESET_DATA. Setting bit 0 in that register + a reset
should disable hyper-threading.

Though, this register is already used in set_flex_ratio_to_tdp_nominal()
in `src/cpu/intel/model_206ax/bootblock.c`.

You can check if hyper-threading is enabled by looking at MSR 0x35
(CORE_THREAD_COUNT) or CPUID (eax 0x0b, ecx 0x00 / 0x01). Both should
be documented in Intel's SDM [1].

You should combine the decision to disable HT with the already present
code for the flex ratio. If any of the two settings need to change,
program SOFT_RESET_DATA accordingly and perform a reset.

Hope that helps,
Nico



More information about the coreboot mailing list