A lot of companies still seem to find the details of virtualization confusing.
Two of them appear to be Intel and Microsoft.
Yesterday Microsoft posted a blog entry notifying customers and developers that machines running Intel's new "Sandy Bridge" processors won't support virtualization using Microsoft's Hyper-V hypervisor, which is built into Windows Server 2008 R2.
The problem is the AVX extensions in the Sandy Bridge chips, which are the most updated version of the extensions Intel first added in 2005 that allowed its chips to support virtualization in the first place.
Before Intel (and AMD, which had its own version) added virtualization-enabling extensions called Intel VT-x it was still possible to run virtual machines on Intel machines. It was slow and unstable, though, because they didn't really know what to do with I/O, memory and hard drive requests coming from two operating systems where there should have been only one.
The Advanced Vector Extensions in Sandy Bridge, initial specs for which Intel published in 2008, were designed to handle 32-bit and 64-bit software, and improve performance by supporting both 128-bit and 256-bit instruction sets.
Because the 256-bit-wide register file is wider than most operating systems can handle, the OS needs explicit support for them.
Luckily, both Windows 7 and Windows Server 2008 R2 have that support, which Microsoft affirms as follows:
In Windows 7 with Service Pack 1 (SP1) and Windows Server 2008 R2, both 32-bit and 64-bit versions of the operating system preserve the AVX registers across thread (and process) switches. To use the AVX registers in kernel mode, a 32-bit or 64-bit driver must explicitly save and restore the AVX registers, just as a 32-bit driver that uses the MMX/x87 registers must explicitly save and restore the MMX/x87 registers.
There's even a Hotfix download on this page, which describes the problem to be fixed as " You cannot start virtual machines on a computer that is running Windows Server 2008 R2 and on which a CPU is installed that supports the AVX feature."
Yes, you can, Microsoft is saying, if you download the Hotfix and install it.
So why does this blog item, published April 26 not only say that Windows Server 2008 R2 does not support AVX, but doesn't support it "by design as we wouldn't want to start a virtual machine with unknown processor capabilities and potentially harm the guest OS?"
Because Microsoft is really good at communicating perfectly accurate information that is more confusing than not having the information in the first place.
(Example: This is the actual solution on that page: "Solution: There are two solutions. The recommend[ed] solution is option 1."
Neither Option 1 nor Option 2 are listed as such on the page. To find the solutions you have to go back and search until you find the two pages I linked to above – which I got from Wikipedia entries that appear to have been written by Intel employees.
Eventually you might figure out that the same blogger posted links to the articles about AVX support and adding SP1 – two days before he posted one saying it wouldn't work. There was no link between the two, but if you follow the breadcrumb at the top of the page to the home page of his blog, you can see it right below the original one that caused all the confusion. )
So what's the real answer to whether Sandy Bridge supports Hyper-V?
Yes, it does, even though it was designed as a low-power processor for tablets and notebooks and hasn't shipped a server version yet, so there is a limited amount of virtualization you'd want to do with it anyway.
To use Sandy Bridge with Hyper-V, first install Service Pack 1 to either Windows 7 or Windows Server 2008 R2. (they're on the same page.)Then, if it still doesn't work, install the Hotfix.
That's just what learning from Microsoft is like.