| From: Lyude Paul <lyude@redhat.com> |
| Date: Thu, 12 Jul 2018 13:02:54 -0400 |
| Subject: drm/nouveau: Remove bogus crtc check in pmops_runtime_idle |
| |
| commit 68fe23a626b67b56c912c496ea43ed537ea9708f upstream. |
| |
| This both uses the legacy modesetting structures in a racy manner, and |
| additionally also doesn't even check the right variable (enabled != the |
| CRTC is actually turned on for atomic). |
| |
| This fixes issues on my P50 regarding the dedicated GPU not entering |
| runtime suspend. |
| |
| Signed-off-by: Lyude Paul <lyude@redhat.com> |
| Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Ben Skeggs <bskeggs@redhat.com> |
| [bwh: Backported to 3.16: |
| - Preserve local variables that are still needed |
| - Adjust context] |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| --- a/drivers/gpu/drm/nouveau/nouveau_drm.c |
| +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c |
| @@ -927,7 +927,6 @@ static int nouveau_pmops_runtime_idle(st |
| struct pci_dev *pdev = to_pci_dev(dev); |
| struct drm_device *drm_dev = pci_get_drvdata(pdev); |
| struct nouveau_drm *drm = nouveau_drm(drm_dev); |
| - struct drm_crtc *crtc; |
| |
| if (nouveau_runtime_pm == 0) { |
| pm_runtime_forbid(dev); |
| @@ -950,12 +949,6 @@ static int nouveau_pmops_runtime_idle(st |
| } |
| } |
| |
| - list_for_each_entry(crtc, &drm->dev->mode_config.crtc_list, head) { |
| - if (crtc->enabled) { |
| - DRM_DEBUG_DRIVER("failing to power off - crtc active\n"); |
| - return -EBUSY; |
| - } |
| - } |
| pm_runtime_mark_last_busy(dev); |
| pm_runtime_autosuspend(dev); |
| /* we don't want the main rpm_idle to call suspend - we want to autosuspend */ |