John Baldwin wrote:
> > You have to enable HT in the BIOS. If it is not enabled in the
> > BIOS, it will not add entries to the MP Table for the virtual
> > processors, and they will not be recognized.
>
> This is not correct. Some BIOS's list all virtual processors in
> the mptable (in which case the HTT patch is not needed and basically
> has no affect) but most only list the first core in each physical
> CPU. Enabling/disabling HT in the BIOS usually only affects ACPI's
> MADT table, not the MP table. The HT patch I wrote doesn't use the
> BIOS at all. It _only_ uses the values in registers returned from
> cpuid.
I have personal experience with a machine that modifies the
contents of the MP Table, based on the BIOS settings, with
regard to hyperthreading.
The problem with the use of the "cpuid 1" instruction to count
the number of cores on a processor is that doing this does not
take into account user settings in the BIOS, where hyperthreading
is intentionally being disabled, for whatever reason.
There is no good answer to this problem, which does not require
exposing a control knob to the user, as a manual control. Most
likely, it requires exposing two control knobs, since the
operations are orthogonal:
o ht_detect_method ACPI Use ACPI (notimp)
MPTAB Use the MP Table
FALLBK Try ACPI, if present; if not,
then try the MPTAB. If ACPI
is present, *don't* try MP Table
DISABLE Do not use HT, even if present
o ht_probe_level ONESHOT Use the specified detection
method _only_, so that HT
can be controlled by the BIOS
settings
CPUID Use the CPUID instruction to
always find HT, if it's a
supported CPU feature
....probably defaulting to FALLBK+ONESHOT, to maximize POLA, with
the possibility of BIOS controls controlling the OS behaviour, as
expected.
One question this raises is whether or not ACPI would indicate
"present, but disabled" vs. "not present". The FALLBK approach
requires the former, if BIOS controls are to be maintained. This
is likely BIOS implementation dependent, unfortunately: if it's
even possible, some vendor likely implements their BIOS by making
the entries disappear from ACPI.
Obviously, this approach would require a lot of work, particularly
with the ACPI support being an outstanding issue. 8-(.
-- Terry
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message