Bug in CPUID, Unpublished Microcode update???

Bug in CPUID, Unpublished Microcode update???

I recently purchased a Toshiba A205 Satellite laptop, which has an Intel T5500 processor. A colleague and I are building an application that uses Intel's VT-x (virtualization) capabilities. I selected this laptop because it was the only one in the store that provided access to Intel's virtualization features via the BIOS menu settings (other models had the virutualization feature "grayed out"). My colleague, who lives in Europe (I live in the States), needed this laptop to do some development and testing work on our VT-x application. Before I shipped the laptop to him, I used the BIOS menu to enable virtualization. After he received the laptop he did some research and learned that the Intel T5500 does NOT support virtualization. (????)

I got in touch with Intel Technical Support and they informed me that the T5500 in fact doesNOT support VT-x. Curious about the BIOS settings, my colleague and I wrote separate assembly language utilities to check for VMX support (CPUID.1.EAX[5] = 1 and both indicate that VT-x is supported. (???)I contacted Intel Technical Support again with this information and reminded them that in addition to these assembly language utilities, the laptop's BIOS menu indicated that VT-x was supported. They asked us to run their Processor Identification Utility (PIU). Here is the log file from that utility:

Intel Processor Identification Utility
Version: 3.6.20070606
Time Stamp: 2007/06/19 11:44:24
Number of processors in system: 1
Current processor: #1
Cores per processor: 2
Processor Name: Intel Core2 Duo CPU T5500 @ 1.66GHz
Type: 0
Family: 6
Model: F
Stepping: 2
Revision: 51
L1 Instruction Cache: 2 x 32 KB
L1 Data Cache: 2 x 32 KB
L2 Cache: 2 MB
Packaging: FCPGA/FCBGA
MMX: Yes
SIMD2: Yes
SIMD3: Yes
Enhanced Halt State: No
Execute Disable Bit: Yes
Hyper-Threading Technology: No
Intel Extended Memory 64 Technology: Yes
Intel Virtualization Technology: Yes
Expected Processor Frequency: 1.66 GHz
Reported Processor Frequency: 1.66 GHz
Expected System Bus Frequency: 667 MHz
Reported System Bus Frequency: 667 MHz

Please note that Intel's PIU correctly identified the processor as being a T5500 AND that "Intel Virtualization Technology: Yes"!! (???)

Can someone explain to me how the laptop BIOS, my assembly language utility, AND Intel's PIU utility ALL indicate that Virtualization is supported, but Intel and all the Intel specifications say that virtualization is NOT supported by the T5500?

To my thinking, there is either a bug in Intel's CPUID instruction or there has been an unpublished microcode update for the Intel T5500. I'm open to other explainations.

Thanks in advance for any insight into the puzzle.

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

We received the following explanation from our engineering contacts:

There is a technical distinction between VT-x is supported in a given processor vs. VT-x is supported in a given PC. A processor is a chip that plugs into a socket; a PC contains many other components, and the software stack that is sold as part of a PC plays a role here.

CPUID reports what features are supported in a given processor. Many processor features also require some BIOS configuration.

It sounds like you wantto develop some system level software to use VT-x; that requires VT-xto beconfigured properly by BIOS to make the VT-x feature available to system executive software (OS or VMM). What BIOS does is configure a model-specific register, IA32_FEATURE_CONTROL. The bit fields are documented in theIntel 64 and IA-32 Architectures Software Developer's Manuals, vol. 3B.

If a PCs BIOS wants to configure the system to support VT-x for system executive softwarethat will receive control from BIOS, theBIOS must program IA32_FEATURE_CONTROL correctly to enable VT-x, and lock the MSR.

The CPUID instruction only reports processor features as they were set at Intels fab. The RDMSR instruction can be used to inquire whether IA32_FEATURE_CONTROL was configured correctly.


Lexi S.

IntelSoftware NetworkSupport


Contact us

Thanks for the response Lexi. I appreciate your time. I'm afraid I didn't phrase my question properly. My question is not how do I get a VMM running. Iknow how to do that. I've got an Intelprocessor (T5500) that according to all specifications does not support virtualization, but evey indication I have (CPUID, Intel's PIU utility and system BIOS) says that virualizationIS supported.

I know that a processor is a discrete component and there are lots of components and software that make up a platform. I also am quite familiar with the IA32_FEATURE_CONTROL MSR, MSR_IA32_VMX_CR0FIXED0, CR0.PE, CR0.NE, CR0.PG, etc., etc. to utilize VMX.

In fact, we have our custom VMM launching and running on another test platform. We have not tested our VMM on the laptop in question.

I've been reluctant to have my colleague run the VMX code on the new laptop for fear of damaging it or at minimum fear of having to re-image itbecauseall the literature and specs on the Intel T5500 state that VT-x is not supported, despite every indication we have to the contrary.

I'm curious about why our assembly language utilities report that VT-x is supported on this processor, why your PIU utility reports that VT-x is supported on this processor and why the system BIOS also allows us to turn VT-x on despite the assertion thatthis processor (T5500)does not support virutualization.

You stated that, "TheCPUID instruction only reports processor features as they were set atIntel's fab." I'm saying that our assembly language routines thatcheck CPUID.1.ECX[5] is reporting that the processor supports VMX.

Your PIU utility alsoreports thatthe VMX feature is present. I assume your PIU utility uses CPUID, but I'm just speculating.

Again, reflecting on your quote about CPUID, I reiterate that CPUID is telling us the VMX is present in this processor despite the specification assertion to the contrary.

So, either the CPUID instruction, your PIU, and the system BIOS are wrong, or the T550 spec is wrong and it does support VMX.

Thank you in advance for re-addressing my question, which is hopefully better stated this time.

Here is the explanation we received:

Generally, the Intel factory will set fuses as theCPU has been tested, assembled into the physical package that plugs into a socket. The set of fuses that are set at thefactory are determined by product specs and sold to OEMs and thechannel according to the feature set.

For the Intel Core2 Duo Mobile ProcessorT5500, the scoop is that one particular stepping was fused with VT-x on instead of the product spec for T5500 (No VT-x). The stepping of T5500 that had VT-x on has the CPUID family/model/stepping signature of 06F2H.

From a software perspective, if the VT-x was fused on, ahypervisor or hosted VMM would work just fine, as CPUID reports what the hardware is capable of.

The reason the product spec lists VT-x as disabled for T5500 is that the priceof a givenSKU (particular processor number) is based on its feature set (frequency, cache size, FSB, VT-x, etc). T5500 is probably priced on the more economical side. So basically,customers with that stepping getthe VT-x feature as a bonus. However, I think in the unforeseen event of the CPUencountering a warranty service incident, it is likely the warranty service will be done according to that of a T5500. That means a replacementCPU may not have VT-x enabled, unless the replacement T5500 also happens to be of the same 06F2 stepping. The VT-x in the T5500, 06F2 stepping should work no differently from the VT-x in theIntel Core2 Duo Mobile Processor T5600.


Lexi S.

IntelSoftware NetworkSupport


Contact us

Thank you very much Lexi. Wow!! This makes sense now. I feel as though I've won a lottery in being so lucky as to find a T5500 fused in such a way as to provide VT-x at no extra cost! (I understand about the warranty). I should have purchased two of them!

Leave a Comment

Please sign in to add a comment. Not a member? Join today