We need to call drm_helper_hpd_irq_event() on resume to properly detect
monitor connection / disconnection on some laptops, use hpd_work for
this to avoid deadlocks.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
                return ret;
        pci_set_master(pdev);
 
-       return nouveau_do_resume(drm_dev, false);
+       ret = nouveau_do_resume(drm_dev, false);
+
+       /* Monitors may have been connected / disconnected during suspend */
+       schedule_work(&nouveau_drm(drm_dev)->hpd_work);
+
+       return ret;
 }
 
 static int
        nvif_mask(&device->object, 0x088488, (1 << 25), (1 << 25));
        vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_ON);
        drm_dev->switch_power_state = DRM_SWITCH_POWER_ON;
+
+       /* Monitors may have been connected / disconnected during suspend */
+       schedule_work(&nouveau_drm(drm_dev)->hpd_work);
+
        return ret;
 }