I might found a solution.....
I had the same problem on my s2.
Every time I waked up the surface, the Nvidia Tegra 4 driver was apparently crashed (huh? when?) and 'succesfully' re-activated. For about 16 times.
That meant I had to click a few minutes trough the error popups, before I could use my s2.
I've been reading, it may had to do with a windows feature called 'TDR' wich monitors the display driver (if it's on or not - or something)
When the device is a sleep, the driver is off, which triggers the darn TDR thingy on wakeup.
Here is the thing: I've found online two edits on that process (in regedit).
1 - we can set a delay on the trigger. TDR waits with panicking, gives the driver a chance to yawn and reset. Doesn't work on sleep, or we need to set the delay for a day or so... lol
2 - stop the TDR monitoring. Period. That seems to work. XP had no TDR to begin with and that worked just fine.
So I stopped the TDR on my surface 2, and now I'll wait if it worked.
For the daring people, here how it is done:
- Exit all Windows based programs.
- Click Start, type regedit in the Search box, and then double-click regedit.exe from the results above. (If you are prompted for an administrator password or confirmation, type the password or provide confirmation)
- Browse to and then click the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002 (sometimes called ControlSet001) \Control\GraphicsDrivers
- On the Edit menu, click New, and then select the following registry value from the drop-down menu specific to your version of Windows (32 bit, or 64 bit):
Select DWORD (32-bit) value if you have an 32 bit version of Windows
- or select DWORD (64-bit) if you have an 64 bit version (duh!)
- Type TdrLevel as the Name and click Enter.
- Double-click TdrLevel and enter the data value as 0 (it is set to that natively, but double check)
- Restart.
That completely turns off Tdr checker, so now windows 7/vista/8 now works more like windows XP
If you still want the checker on, but with the delay, just simply make an
TdrDelay, instead of TdrLevel, and set it's value to
8
Only one of those can be in there, otherwise they will fight each other and that's never a good thing!
Mind you - I'm still testing if this works!!!