Why does Hyper-threading get reported as supported on processors without it?

cpuid, hyperthreading, intel, x86

Solution

Here's the definition of that bit according to the Intel Developer's Manual:

Max APIC IDs reserved field is Valid. A value of 0 for HTT indicates there is only a single logical processor in the package and software should assume only a single APIC ID is reserved. A value of 1 for HTT indicates the value in CPUID.1.EBX[23:16] (the Maximum number of addressable IDs for logical processors in this package) is valid for the package.

In chapter 8 of volume 3A of the manual, it describes how one properly detects hardware multi-threading.

Here's a link:

http://download.intel.com/products/processor/manual/325462.pdf

Problem

I'm trying to gather system information and noticed the following on an Intel Xeon E5420: After executing `CPUID(EAX=1)`, EDX[28] is set, indicating Hyper-threading support, despite the fact that the processor is listed on the Intel website as not supporting Hyper-threading (ark.intel.com) Does anyone have an explanation for this?

Original source