Hi Lyude, thanks a lot for your persistence in attacking these runtime PM issues in nouveau. v4 of this series looks very good overall. I only have comments on patches 1, 2 and 8. On this patch 1 it's merely a nit: On Wed, Aug 01, 2018 at 05:14:51PM -0400, Lyude Paul wrote: > --- a/drivers/gpu/drm/nouveau/nouveau_drm.c > +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c > @@ -835,7 +835,6 @@ nouveau_pmops_runtime_suspend(struct device *dev) > return -EBUSY; > } > > - drm_kms_helper_poll_disable(drm_dev); > nouveau_switcheroo_optimus_dsm(); > ret = nouveau_do_suspend(drm_dev, true); > pci_save_state(pdev); This third hunk in the patch lacks an explanation in the commit message. I think its rationale is that drm_kms_helper_poll_disable() is already invoked in nouveau_display_fini(), which gets called on ->runtime_suspend, hence need not be invoked once more in nouveau_pmops_runtime_suspend(). Thanks, Lukas