From 4c13db0c640744d5033c548e55e01d754f21b431 Mon Sep 17 00:00:00 2001 From: Peter Ujfalusi Date: Tue, 31 Jan 2017 00:17:50 +0200 Subject: [PATCH 2/3] drm: nouveau_drm: HACK to reorder the work executions Make sure the the hpd_work is going to be scheduled before the work for the poll. Signed-off-by: Peter Ujfalusi --- drivers/gpu/drm/nouveau/nouveau_drm.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index f4c5cea0420e..1e3993e00f90 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -705,10 +705,18 @@ nouveau_pmops_resume(struct device *dev) ret = nouveau_do_resume(drm_dev, false); + /* HACK */ + DRM_DEV_DEBUG_KMS(drm_dev->dev, "BUG98690: poll_disable\n"); + drm_kms_helper_poll_disable(drm_dev); + /* Monitors may have been connected / disconnected during suspend */ DRM_DEV_DEBUG_KMS(drm_dev->dev, "BUG98690: schedule hpd_work\n"); schedule_work(&nouveau_drm(drm_dev)->hpd_work); + /* HACK */ + DRM_DEV_DEBUG_KMS(drm_dev->dev, "BUG98690: poll_enable\n"); + drm_kms_helper_poll_enable(drm_dev); + return ret; } @@ -780,17 +788,22 @@ nouveau_pmops_runtime_resume(struct device *dev) pci_set_master(pdev); ret = nouveau_do_resume(drm_dev, true); - DRM_DEV_DEBUG_KMS(drm_dev->dev, "BUG98690: poll_enable\n"); - drm_kms_helper_poll_enable(drm_dev); /* do magic */ 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; + /* HACK */ + DRM_DEV_DEBUG_KMS(drm_dev->dev, "BUG98690: poll_disable\n"); + drm_kms_helper_poll_disable(drm_dev); + /* Monitors may have been connected / disconnected during suspend */ DRM_DEV_DEBUG_KMS(drm_dev->dev, "BUG98690: schedule hpd_work\n"); schedule_work(&nouveau_drm(drm_dev)->hpd_work); + DRM_DEV_DEBUG_KMS(drm_dev->dev, "BUG98690: poll_enable\n"); + drm_kms_helper_poll_enable(drm_dev); + return ret; } -- 2.11.0