drm/nouveau: don't suspend/resume display on runtime s/r
Subsystems (3)
Dave Airlie
maintainerPATCH 1/1 drm/nouveau: don't suspend/resume display on runtime s/r
From: Dave Airlie <[email protected]>
This should ensure we don't hit a locking problem when someone wakes us up via a connector, we should never go into suspend while the display is on anyways.
Signed-off-by Dave Airlie <[email protected]>
--- drivers/gpu/drm/nouveau/nouveau_drm.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-)
drivers/gpu/drm/nouveau/nouveau_drm.c +5 -7
@@ -486,13 +486,13 @@ nouveau_drm_remove(struct pci_dev *pdev) }static int -nouveau_do_suspend (struct drm_device *dev) +nouveau_do_suspend (struct drm_device *dev,bool runtime) {struct nouveau_drm *drm =nouveau_drm (dev);struct nouveau_cli *cli;int ret; -if (dev->mode_config.num_crtc) { +if (dev->mode_config.num_crtc && !runtime) {NV_INFO (drm,"suspending display...\n" ); ret =nouveau_display_suspend (dev);if (ret)
@@ -566,7 +566,7 @@ int nouveau_pmops_suspend(struct device *dev)if (drm_dev->mode_config.num_crtc)nouveau_fbcon_set_suspend (drm_dev,1 ); - ret =nouveau_do_suspend (drm_dev); + ret =nouveau_do_suspend (drm_dev, false);if (ret)return ret;
@@ -646,7 +646,7 @@ static int nouveau_pmops_freeze(struct device *dev)if (drm_dev->mode_config.num_crtc)nouveau_fbcon_set_suspend (drm_dev,1 ); - ret =nouveau_do_suspend (drm_dev); + ret =nouveau_do_suspend (drm_dev, false);return ret; }
@@ -879,7 +879,7 @@ static int nouveau_pmops_runtime_suspend(struct device *dev)drm_kms_helper_poll_disable (drm_dev);vga_switcheroo_set_dynamic_switch (pdev,VGA_SWITCHEROO_OFF );nouveau_switcheroo_optimus_dsm (); - ret =nouveau_do_suspend (drm_dev); + ret =nouveau_do_suspend (drm_dev, true);pci_save_state (pdev);pci_disable_device (pdev);pci_set_power_state (pdev, PCI_D3cold);
@@ -905,8 +905,6 @@ static int nouveau_pmops_runtime_resume(struct device *dev)pci_set_master (pdev); ret =nouveau_do_resume (drm_dev); -if (drm_dev->mode_config.num_crtc) -nouveau_display_resume (drm_dev);drm_kms_helper_poll_enable (drm_dev);/* do magic */ nv_mask (device,0x88488 , (1 <<25 ), (1 <<25 ));
Signature · 1 line
1.8.3.1