Regarding Xen virtualization, I haven't tried Nvidia yet (my Quadro 2000 for testing is in the post), but I sincerely hope the experience is less appalling than with the ATI. Granted, ATI cards almost work whereas desktop Nvidia cards don't work at all with VGA passthrough without a whole raft of extra Xen patches, but the experience is poor at best. All in all, good enough for a demo, but absolutely not good enough for anything meaningful.
The patches are only 5 files, about 100 lines of code in total. They are just to read the bios from an extracted bios rather than from the card at runtime as well as a few other things that Xen can't pull dynamically, unlike AMDs. It is fairly basic code, nothing fancy.
I'm not saying it's a big deal, but it's unstable and not merged into the mainline last time I checked, which means that if you care about such niceties as package management, especially on a stable (e.g. EL6) rather than unstable bleeding edge (e.g. Fedora) distribution, you have to hunt around for the specific versions that the patches are against or versions that the patches apply against cleanly (and work). And considering that some of these things don't work too well even when extensively tested, I don't fancy my chances much with something that has been only tested by a handful of individuals.
As far as only "good enough for a demo", I will have to disagree. You may have just had a poor experience and been unfortunate enough to have an uncooperative motherboard and graphics card. I can attest the fact that the passthrough is fairly stable once it is setup properly (that's the hard part). I had it running for 2 weeks as a gaming VM and it never had a hiccup with an older 5670 of mine. It was impressive! That said, I wouldn't put this into a production environment without alot more testing.
It's not just about the motherboard or the card being uncooperative. Sure, having to disable irq balancing took a while to think of to try (google didn't find much obvious mention of it, and neither did anyone mention it on the threads I posted on xen-users). But if things work for 10 minutes, they should stay working and not randomly crash after that. And since the BSODs always refer to a device reset failure/timeout, it looks like the problem is mainly related to the driver not knowing how to reset the card properly. (Also see below re: FLreset.)
My plan is to test whether using a Quadro 2000 (drivers officially supports VGA passthrough) makes for a workable experience before I spend 4x as much on a GTX680 to modify into a Quadro K5000 or a Grid K2. Ideally I'd rather like to get a Titan and see what happens if I mod it's device ID to read as a K5000, but as far as I can tell nobody ever reported trying it, and I'd hate to end up with a Titan that I cannot use for it's intended purpose.
Keep in mind that the Quadro series does not support FLReset. It is probably not a good idea to use that for passthrough if you plan to start and stop the VM. It will work just fine, but Xen/linux won't be able to reset the card upon VM reboot. If you have to reboot the VM you'll still need to reboot the entire machine. You may have crashes or performance degradation otherwise.
The above also applies to the K5000 if you plan to modify a Titan, there will be no FLReset.
I know that they, too, lack FLreset, but I am not all that convinced that FLreset is all that necessary. Sure, it makes it a little easier for the driver to do it's job, but think about this at a low level like an embedded engineer for a moment. On the lowest level it comes down to setting registers on the device. Unless the card is poorly engineered and buggy (e.g. it drops off the bus in a questionable, un-re-attachable and uncontactable state), the driver should always be able t o set the registers to whatever they need to be to get the card to a known, initialized state, without even any help from the card's BIOS. FLreset is a nicety that means your driver doesn't have to handle the initialization of the hardware itself, but it doesn't strike me at all as a necessity to get something like this working properly.
I'll know one way or the other soon enough.
Edit: Having tried a Quadro 2000, the experience thus far is that it is even more unstable than using an ATI card. Most disappointing. I guess I won't be wasting my time modifying a GTX into a Quadro.