drm/nouveau: Remove bogus crtc check in pmops_runtime_idle
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> Cc: stable@vger.kernel.org Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
		
							parent
							
								
									e5d54f1935
								
							
						
					
					
						commit
						68fe23a626
					
				@ -874,22 +874,11 @@ nouveau_pmops_runtime_resume(struct device *dev)
 | 
			
		||||
static int
 | 
			
		||||
nouveau_pmops_runtime_idle(struct device *dev)
 | 
			
		||||
{
 | 
			
		||||
	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_pmops_runtime()) {
 | 
			
		||||
		pm_runtime_forbid(dev);
 | 
			
		||||
		return -EBUSY;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	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 */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user