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