Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 04 Feb 2003 12:25:56 -0800
From:      Terry Lambert <tlambert2@mindspring.com>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        freebsd-smp@freebsd.org, Chris Luke <chrisy@flix.net>, Brendon and Wendy <brendy33@attbi.com>
Subject:   Re: mp_machdep.c patch
Message-ID:  <3E4021D4.7D1FCD43@mindspring.com>
References:  <XFMail.20030204142840.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3E4021D4.7D1FCD43>