VMware Communities
cypherx
Hot Shot
Hot Shot

The road to IOMMU (direct video card memory access)

With Xen now working with IOMMU, they can provide the VM guest with direct access (DMA) to the video graphics subsystem.  This allows them to use native video card drivers for the type of harware that resides in the physical host system.

Why is this important to me?

Using native drivers with full DMA access can provide high performance graphics such as DirectX 11 / OpenGL / Quartz Extreme / Core Image  and other FULL graphic features supported by the core hardware and driver installed in the guest OS (Windows 8/7, Mac OSX, *NIX, etc..).

Is this something VMWare plans to implement in a future release of VMWorkstation (perhaps VMWare 9?)  IOMMU would allow one to fully virtualize a system in full performance allowing you to run any graphics dependant application in the guest as your host hardware supports.

http://en.wikipedia.org/wiki/IOMMU

From the Xen FAQ:

"

Xen 4.0.0 is the first version to support VGA graphics adapter passthrough to Xen HVM (fully virtualized) guests. This means you can give HVM guest full and direct control of the graphics adapter, making it possible to have high performance full 3D and video acceleration in a virtual machine.

Xen VGA passthrough requires IOMMU (Intel VT-d) support from the motherboard chipset, from the motherboard BIOS and from Xen. Please see the VTdHowTo wiki page for more information about Xen VT-d support and supported chipsets with IOMMU.

Xen 4.0.0 supports VGA passthrough of the primary graphics adapter (the one that gets initialized and is used when you power-on the computer) only. VGA passthrough of secondary graphics adapters currently requires additional extra patches to Xen.

Initial Xen VGA graphics passthru support was committed to xen-unstable development repository in September 2009, and more support for Intel IGD passthru was added in February 2010."

Could you imagine how AWESOME this would be if VMWare implemented highly virtualized machines with full VT-d and IOMMU support allowing for NATIVE guest OS drivers to be installed in the virtual machine?  It would simply REVOLUTIONIZE the virtual machine industry.

0 Kudos
5 Replies
cypherx
Hot Shot
Hot Shot

The more reasearch I do, I see that VMWare may call this VMDirectPath.  It seems like it is implemented in a way in ESX 4.1 and later (possibly ESXi).

However I am talking about this in VMWare workstation.

0 Kudos
kdshapiro
Enthusiast
Enthusiast

I don't want to derail thread, but this begs the question, why use virtualization if the guest has direct access to the hardware? Doesn't it defeat the purpose of a level of isoluation from the host virtualization provides?

If a malicous guest has direct access to hardware, in theory it can bring down the host.

0 Kudos
cypherx
Hot Shot
Hot Shot

Well you could use native drivers for example.  That way you could get full hardware acceleration for sound and video utilizing the processors on the video and sound cards.  Some examples of good use would be:

1) Native AMD or NVidia graphics drivers for 3D acceleration for CAD, Design, and other heavy OpenGL applications

2) Native AMD or NVidia graphics drivers for full 3D performance in gaming

3) Native AMD or NVidia graphics drivers for full QuartzExtreme / CoreImage support in Mac OS X (SL/Lion/Mtn Lion)

The host would be running any flavor of OS, Windows 7, Linux, Mac OS, etc...  That's the beauty of virtualization.  You may have a Windows 7 system but you need to test or run applications with full hardware acceleration for other operating systems (Mac OS, Windows XP, etc..)

I've seen some demo's of Xen running Windows games with 100+ Frames per Second using the native graphics driver, though virtualized on a Debian Linux based host.  Me personally I would use it to build Mac applications that utilize the full QE/CI support.  Right now the VMWare SVGA driver does not support it, but theres AMD and NVidia drivers that do.  If direct access can be mapped using a subset of VMDirectPath, then the native operating system drivers can be used and fully utilize that hardware to it's capacity... rather then trying to emulate things at a huge performance cost (like Direc3D and Aero).

0 Kudos
Bernd_Nowak
Hot Shot
Hot Shot

This is not new and I read some pages now about this. I would say that the main problem seems that it's limited to one VM which makes it not that perfect and the special problems (Video card BIOS) seems to indicate that there's no real 'breakthrough'. And even if it would be 'possible' a modern dx11 game, for example, needs the RAM (1 GB :O) and the total access to the shaders. Now if we take away the problem with the BIOS RAM access there's the problem of sharing. You would have the problem that FPS would be reduced by the host/number of VMs. So I don't see that some sort of direct access will gain you the advantages you want to see.

I know that VMware Workstation running on a windows host can use the most from the DX on the host. I would tend to think that they use the DX API of the driver to offer some DX features. But while I would l love to have the same performance in my guests like on my host I fear that this will not be possible.

Only guesses for sure Smiley Wink

0 Kudos
cypherx
Hot Shot
Hot Shot

I'm sure there would be some performance hit, especially if there are multiple VM's running concurrently on the same host.  I really would like to try Xen on Debian, as the example videos I've seen appear to indicate very good performance via direct i/o, video and audio access.  I'm not sure how they do it so well, but I was hoping VMWare would lead the industry off with the ability to use paravirtualized aware drivers.  I'm not sure of the Windows O/S has paravirtualization support.  I know it is included in the mainline Linux kernel since 2.6.23, and perhaps that is why Xen works so well in a Linux environment.

I would just love to use the native ATI kexts in my Mac OS Lion VM running on Workstation 8.  However without direct access I am only limited to the VMWare SVGA driver from VMWare Fusion, which has no graphics acceleration (Quartz Extreme / Core Image).  For development and testing, able to access a fully featured machine is worthwile.  Additionally when traveling, only carrying ONE high performance laptop beats carrying 2 or more for different operating systems / scenereo's.

Another example would be the ability to test graphics accelerated programs and features in various Linux distrubutions within a virtual machine.  Or the ability to have a Windows 7 virtual machine that is seperate for testing feature rich graphic applicaitons without interfering with the core system.

0 Kudos