Under Xenserver 5.6 and xen3.x-4.0 with VT-d (with SLIMOS enabled GPUs), the nvidia driver, installed in a guest VM on a passed through device, triggers a blue screen upon loading.
When virtualized with VT-d under Xen, the GPU must use MSI style interrupts to avoid a Xen bug with interrupt processing.
Using MSI style interrupts is not enabled by default in the package downloaded from nvidia.com, as some old systems still have some trouble supporting them. To enable MSI interrupts, these lines must be added in the inf file *before* installing the driver onto the passed-through GPUs in guest.
So the GPU driver package must be downloaded from nvidia.com and the .inf file modified locally before installing.
in the nv_disp.inf (in the Display.Driver subdir), add the section marked by >>> (removing the >>>>)
...
[Section004.Services]
AddService = nvlddmkm, 0x00000002, nv_nvlddmkm_serviceInstall
>>>[Section004.HW]
>>>AddReg = nv_msiSupport_addreg
>>>[nv_msiSupport_addreg]
>>>HKR,Interrupt Management\MessageSignaledInterruptProperties,MSISupported,0x00010001,1
If the PCI id of your GPU is in Section 005, than this patch needs to be applied to Section 005.
Make sure you uninstall any previously installed nvidia driver before proceeding.