Thursday, January 14, 2010

AMD IOMMU is AMD Vi

This post isn't about the kernel boot error regarding 64MB of memory and IOMMU. This post is about IOMMU and virtualization

Much to my chagrin, I've discovered that the AMD IOMMU virtualization technology now called AMD Vi is not supported on any of its 7xx chipsets. I've recently upgraded from a 780G motherboard to a 790GX. From whatever reason, I was under the impression that AMD was supporting this IOMMU capability already. Intel has been supporting it forever. They call it VT-d. Since Intel has been supporting it for so, it's probably why I assumed that AMD was supporting it. Finally after digging around wikipedia and the AMD website this evening, I came to the conclusion that it wasn't supported. I should have dug around a bit more before I purchased the Intel Gigabit ET ethernet card that has SR-IOV support.

Now, I'm feeling pretty jaded about my decision to buy AMD products. I've been buying them because they have reasonable performance for a good price. All of the AMD processors have virtualization support, whereas not all Intel processors had it. Even some of the higher end Intel desktop processors didn't have it.

Even if I had chosen to go with Intel, I would have had to be careful. Not all of Intel's chipsets support VT-d. Just a quick search with google shows that there has been quite a bit of confusion. Some people were calling Intel support and couldn't get an answer.

The confusion associated with finding out what virtualization tech is supported by a particular processor and chipset should not exist. At the very least the there should be a table for processors and a table for chipsets that list capabilities. Instead there's lots of confusion.

Even PC/laptop manufacturers make it tough for consumers. HP and another big name vendor, either Sony or Lenovo, have been known not to support enabling of virtualization in the BIOS. (Yes you typically have to enable it in the BIOS. It's not on by default.) HP finally enabled it in one model after enough outcry, but the other vendor gave their customers the finger. (Not literally of course.)

Overall, I'm please with how well the virtualization stuff is working. I no longer have to use a proprietary Virtual Machine solution to run windows and other items. KVM+QEMU work well. Fedora 12's implementation is great. I'm just disgusted that determining capabilities about vendor solutions is so problematic.

Update:
If you want IOMMU (VT-d or AMD-Vi) on a desktop chipset, you'll have to stick with Intel for now. The wikipedia page for Intel chipsets seems to have the best information about VT-d support for chipsets in one place. If you can provide a better link to more information, please post.

X86 Virtualization
AMD Server Chipset
AMD-Vi

Update:
AMD's newest chipset for desktops, the 890FX, has support for IOMMU 1.2 according to Anandtech. From what I know, IOMMU 1.2 is AMD-Vi.

5 comments:

Yuchin said...

hi just drop by...now AMD chipset Mb do support VT as well..i check the BIOS options of GA-MA790XT-UD4P, there's Virtualization option

James Hubbard said...

Yes the AMD 790GX does support the virtualization instructions. Technically, it's not VT-d. It's AMD-V. What the 790GX doesn't support is AMD-Vi, which was knowns as IOMMU.

theHand said...

"If you can provide a better link to more information, please post."

Intel's ARK has a list of features for each processor which include if the processor has support for VT-x and VT-d.
Here are some links to the processors on Newegg, and pages for those processors on ARK:
http://www.newegg.com/Product/Product.aspx?Item=N82E16819116371
http://ark.intel.com/Product.aspx?id=42811

http://www.newegg.com/Product/Product.aspx?Item=N82E16819115037
http://ark.intel.com/search.aspx?q=e8400
All of the e8400 steppings seem to have the VT-d feature.


Unfortunately, AMD's website does not have a such a resource (unless it's just not hyperlinked to or, has a robots.txt, or something).

Shankhadeep said...

Its silly to assume just because you think a feature should be supported it will magically happen in a product that never was advertized to support it. Also 890FX chipset is a desktop variant of the SR5690 server chipset and does NOT officially support IOMMU so don't assume every 890FX board you will by will support it. If you want a server feature then buy a server part otherwise x your fingers. Intel isn't any better, they turn of all types of features in their chip sets and cpus and its all in the discretion of the motherboard makers anyways. Do your homework before you start crying.

James Hubbard said...

Shankhadeep, did you just drop by to troll? The first paragraph of my post explained that I was being stupid about the whole IOMMU situation.

The only worthwhile part of your entire post was the "so don't assume every 890FX board you will by will support it". The 890FX does have official AMD support for IOMMU, but not every vendor enables it on the board. See wikipeida entry for the 800 series. (Do you happen to remember when HP decided not to enable virtualization instructions on it's laptop computers?)

Please note that when you search for AMD-Vi or AMD IOMMU, my blog posting shows up in the top 10 entries as of today. I'm assuming that it's due to the lack of easily accessible information on AMD's website. As another poster mentioned, Intel is better about providing information. This was especially true 14 months ago.

As to your comment about buying a sever motherboard: If I wanted a server motherboard I would have bought one. Also, I would like for you to note that the entry was written over 14 months ago. There weren't many low end server motherboards that supported AMD-Vi at that time. All I wanted was something low end that I could use for experimentation without breaking the bank. Buying a server board, ECC memory and an Opteron Proc didn't qualify especially at that moment in time. Dell wasn't even selling servers based on the newer AMD chipset until 7 or 8 months ago.

Next time try to look at the date of the posting and place your self in that timeframe. When you post try to post something helpful and don't be so asinine about it.