Event ID 4101 - Display driver nvlddmkm stopped responding and was recovered

Read this first

Some people suggest updating/reinstalling nvidia drivers, changing the PCIe version to 2.0 or even reinstalling the whole OS and some other weird "solutions". While some of them are worth trying out not a single one of those did help me getting closer to a stable display driver.

Of course this can be caused by a hardware failure as well but since the GPU was working fine before I didn't believe that. So I made my way deep into the rabbit hole of Error 4101.

btw: I found this problem while passing through an NVIDIA GPU to a KVM Windows Guest but this can also occur on a normal Windows PC.

Things to check beforehand

  • Make sure you have the right driver installed for your GPU
  • Run a RAM-Test to make sure your RAM is not the problem's source
  • If overclocked set the memory and core frequence of your GPU to default
  • Benchmarks like Furmark did not cause any crashes in my case but most 3D games did. Especially Titanfall 2 and Battlefield V caused the driver to crash pretty much instantly. Minecraft also didn't run for more than 5 minutes.

The problem

NVIDIA driver crashing after a couple minutes when playing a game or utilizing the card a little bit.

  • Suddenly a black screen.
  • After a few seconds you can see your Windows wallpaper because your game crashed hand in hand with the display driver.
  • You can find the Event 4101 in the event viewer saying "Display driver nvlddmkm stopped responding and was recovered"

The cause

Windows seems to be using so called Line-Based Interrupts instead of Message-signaled Based Interrupts by default.

More information about interrupts can be found here: forums.guru3d.com

The solution

Tell windows to use Message-Signaled Based Interrupts for your GPU. However it's a little bit tricky to do that:

Find the GPU in device manager

  • Open up Device Manager
  • Click on View and select Resources by type
  • Expand Interrupt request (IRQ)
  • Now you need to find your GPU in this list (Probably has NVIDIA in it's name).

Devices in this list will be named after a specific format: (<Type>) <Number-in-Hex> (<Number-in-Decimal>) <Device Name>. For Example: (PCI) 0x00000014 (20) Nvidia Gefore GTX 1080.

This means that PCI is the Type, 0x00000014 is the device number in hexadecimal, 20 is the device number in decimal and Nvidia Geforce GTX 1080 is the device name.

You are looking for the Device Number which is 20 in this case.

  • A positive device-number means the device is line-based.
  • A negative device-number means the device is message signaled-based.

  • If your GPU already has a negative device number you don't need to continue and your Problems are probably coming from something else.
  • After finding your GPU in the list right-click on it and select Properties.
  • Go to the Details-Tab
  • Select Device Instance Path in the Dropdown list
  • Write down it's Value. You need it in the next step.

Copy the value of the `Device Instance Path`. Yours will most likely start with 'PCI'

Switch to message signaled-based interrupts

Make sure you have written down the Device Instance Path from before. Let's assume the Device Instance Path is PCI\VEN_10DE&DEV_0A65&SUBSYS_13123842&REV_A2\4&3507A271&0&0008 for this example. Your's will be different.

  • Open up regedit and Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\{{DEVICE-INSTANCE-PATH}}
  • Replace {{DEVICE-INSTANCE-PATH}} with your Device Instance Path from before!

Your Registry path should now look something like this:

  • From there navigate to Device Parameters\Interrupt Management\MessageSignaledInterruptProperties.
  • If the key named Interrupt Management or MessageSignaledInterruptProperties does not exist simply create it.
  • Inside Device Parameters\Interrupt Management\MessageSignaledInterruptProperties create a DWORD value (32-bit) named MSISupported and set it's value to 1.
  • Reboot and check the device manager if the the device number of your GPU changed to a negative number.

  • You can also disable Message-Signaled Bases Interrupts again by simply setting MSISupported to 0.

If you have a minute please leave a comment below if this did or did not help you (No registration required). Thanks.

I'm not responsible for any possible damage on your computer and/or Operating System.