Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b2fe659 authored by Hans de Goede's avatar Hans de Goede Committed by Ben Skeggs
Browse files

drm/nouveau: Queue hpd_work on (runtime) resume



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: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 81280d0e
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -699,7 +699,12 @@ nouveau_pmops_resume(struct device *dev)
		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
@@ -773,6 +778,10 @@ nouveau_pmops_runtime_resume(struct device *dev)
	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;
}