Message ID | 20180807203914.2192-8-lyude@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix connector probing deadlocks from RPM bugs | expand |
Reviewed-by: Karol Herbst <kherbst@redhat.com> On Tue, Aug 7, 2018 at 10:39 PM, Lyude Paul <lyude@redhat.com> wrote: > Currently, it appears that nouveau_do_suspend() forgets to roll back > suspending fbcon and suspending the device LEDs. We also currently skip > the entire rollback process if nouveau_display_suspend() fails. So, fix > that. > > Signed-off-by: Lyude Paul <lyude@redhat.com> > Cc: stable@vger.kernel.org > Cc: Lukas Wunner <lukas@wunner.de> > Cc: Karol Herbst <karolherbst@gmail.com> > --- > drivers/gpu/drm/nouveau/nouveau_drm.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c > index 5ea8fe992484..db56e9b6b6af 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_drm.c > +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c > @@ -674,10 +674,11 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime) > if (dev->mode_config.num_crtc) { > NV_DEBUG(drm, "suspending console...\n"); > nouveau_fbcon_set_suspend(dev, 1); > + > NV_DEBUG(drm, "suspending display...\n"); > ret = nouveau_display_suspend(dev, runtime); > if (ret) > - return ret; > + goto fail_fbcon; > } > > NV_DEBUG(drm, "evicting buffers...\n"); > @@ -719,7 +720,14 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime) > if (dev->mode_config.num_crtc) { > NV_DEBUG(drm, "resuming display...\n"); > nouveau_display_resume(dev, runtime); > + > +fail_fbcon: > + NV_DEBUG(drm, "resuming console...\n"); > + nouveau_fbcon_set_suspend(dev, 0); > } > + > + nouveau_led_resume(dev); > + > return ret; > } > > -- > 2.17.1 > > _______________________________________________ > Nouveau mailing list > Nouveau@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/nouveau
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 5ea8fe992484..db56e9b6b6af 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -674,10 +674,11 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime) if (dev->mode_config.num_crtc) { NV_DEBUG(drm, "suspending console...\n"); nouveau_fbcon_set_suspend(dev, 1); + NV_DEBUG(drm, "suspending display...\n"); ret = nouveau_display_suspend(dev, runtime); if (ret) - return ret; + goto fail_fbcon; } NV_DEBUG(drm, "evicting buffers...\n"); @@ -719,7 +720,14 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime) if (dev->mode_config.num_crtc) { NV_DEBUG(drm, "resuming display...\n"); nouveau_display_resume(dev, runtime); + +fail_fbcon: + NV_DEBUG(drm, "resuming console...\n"); + nouveau_fbcon_set_suspend(dev, 0); } + + nouveau_led_resume(dev); + return ret; }
Currently, it appears that nouveau_do_suspend() forgets to roll back suspending fbcon and suspending the device LEDs. We also currently skip the entire rollback process if nouveau_display_suspend() fails. So, fix that. Signed-off-by: Lyude Paul <lyude@redhat.com> Cc: stable@vger.kernel.org Cc: Lukas Wunner <lukas@wunner.de> Cc: Karol Herbst <karolherbst@gmail.com> --- drivers/gpu/drm/nouveau/nouveau_drm.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)