Originally Posted by mooninite
Could you build something into the nvidia module that allows temporary suspension of resources of the module? It could "suspend" the X session long enough to allow access to the card resources required by the new module, load/unload the new module, then let the old module resume the session. This is done without unloading the original nvidia.ko from the kernel.
I imagine the screen would go black for 1-2 seconds during this process.
I actually thought about that for a while, and the answer is not really -- we could probably test-load the module with a different name, but one of the things it tests is whether the device probe routine is called correctly, and that wouldn't work. Also, even if we could suspend things for a while, there's no way to unhook and replace the X driver in a running X server so you'd still have to completely restart the X server anyway. Finally, while a VT switch will work to clear out the X driver and direct-rendering OpenGL and VDPAU clients, there's nothing similar that would work for CUDA apps, so having any of those running would still prevent the kernel module from being unloaded.