#include <drm/drm_crtc.h>
 #include <drm/drm_device.h>
 #include <linux/kgdb.h>
+#include <linux/vgaarb.h>
 
 enum mode_set_atomic {
        LEAVE_ATOMIC_MODE_SET,
                                                  int resource_id,
                                                  const char *name)
 {
+       int ret = 0;
+
+       /*
+        * WARNING: Apparently we must kick fbdev drivers before vgacon,
+        * otherwise the vga fbdev driver falls over.
+        */
 #if IS_REACHABLE(CONFIG_FB)
-       return remove_conflicting_pci_framebuffers(pdev, resource_id, name);
-#else
-       return 0;
+       ret = remove_conflicting_pci_framebuffers(pdev, resource_id, name);
 #endif
+       if (ret == 0)
+               ret = vga_remove_vgacon(pdev);
+       return ret;
 }
 
 #endif