Control: forwarded -1 https://lore.kernel.org/nouveau/aviIPk4xbKhgqcTy@monoceros Hello, On Sun, Oct 25, 2026 at 10:30:06PM +0100, Marek Vasut wrote: > This reverts commit 310326bb7df4bba094a3fc60364c641c547fd923. > > This breaks shutdown on ThinkPad W510, without the offending commit > the system normally powers off, with the offending commit the system > ends up spinning indefinitely and the CPU fan goes full throttle on > shutdown. > > The behavior was already reported in debian bugtracker multiple times > for various other computers too, and git bisect lands as this commit. > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1141969 I think the original bug #1141969 is a different issue. > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1146033 Here it affects a Lenovo ThinkPad T510 and I think that's the same issue that Marek has. > I tested the revert with Linux 7.2.12 from debian unstable, not next > or drm trees, mainly because it was easier with debian test-patches > script on that machine. > > Signed-off-by: Marek Vasut > --- > Cc: Danilo Krummrich > Cc: David Airlie > Cc: Li Chen > Cc: Lyude Paul > Cc: Maarten Lankhorst > Cc: Maxime Ripard > Cc: Ole Carlsen > Cc: Simona Vetter > Cc: Thomas Zimmermann > Cc: Uwe Kleine-König > Cc: dri-devel@lists.freedesktop.org > Cc: linux-kernel@vger.kernel.org > Cc: nouveau@lists.freedesktop.org > --- > NOTE: Maybe the revert is not the ideal solution, but it does fix my > problem, and I think being able to shut computer down is a good > functionality to have. > --- > drivers/gpu/drm/nouveau/nouveau_drm.c | 32 --------------------------- > 1 file changed, 32 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c > index 5e1336615cf6d..36c74f9edaa83 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_drm.c > +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c > @@ -1090,37 +1090,6 @@ nouveau_pmops_resume(struct device *dev) > return ret; > } > > -static void > -nouveau_drm_shutdown(struct pci_dev *pdev) > -{ > - struct nouveau_drm *drm = pci_get_drvdata(pdev); > - int ret; > - > - if (!drm) > - return; > - > - if (drm->dev->switch_power_state == DRM_SWITCH_POWER_OFF || > - drm->dev->switch_power_state == DRM_SWITCH_POWER_DYNAMIC_OFF) > - return; > - > - ret = nouveau_do_suspend(drm, false); > - if (ret) > - NV_ERROR(drm, "shutdown suspend failed with: %d\n", ret); > - > - pci_save_state(pdev); > - pci_disable_device(pdev); > - pci_set_power_state(pdev, PCI_D3hot); > - /* > - * This is just to give the pci power transition time to settle > - * before an immediate kexec jump. it’s mirroring the existing > - * nouveau_pmops_suspend() behavior, which already does > - * udelay(200) right after pci_set_power_state(..., pci_d3hot). In > - * ->shutdown() we’re allowed to sleep, so I used usleep_range() > - * instead of a busy-wait udelay(). > - */ > - usleep_range(200, 400); > -} > - I cannot reproduce it, but maybe it's helpful to find out where/how the driver hangs. Adding printks might be enough, and if not, remove stuff from nouveau_drm_shutdown() until it works. I'd guess this gives the needed insights to determine a fix without reverting the identified commit. Best regards Uwe